إيثار شروف

إيثار شروف

مطوّر ويب وتطبيقات

الإعدادات
الوضع الداكن

قائمة الأكواد

42 نتيجة

Eloquent

hasMany ، تحديد عدد السجلات

بإستخدام العلاقة hasMany، نستطيع عمل فلترة للسجلات التي تحتوي على عدد X من الأبناء

// Author -> hasMany(Book::class)
$authors = Author::has('books', '>', 5)->get();
21 يناير 2024 2,402 مشاهدة
Model

ترتيب العناصر OrderBy حسب العلاقات في الـ model

نستطيع عمل ترتيب للبيانات OrderBy مباشرة من خلال العلاقات في الـ model

public function products(){
    return $this->hasMany(Product::class);
}
public function productsByName(){
    return $this->hasMany(Product::class)->orderBy('name');
}
21 يناير 2024 2,428 مشاهدة
Model

تغيير تنسيق حقول timestamp

لتغيير تنسيق حقول timestamp نستطيع إضافة دوال لذلك في الـ model

public function getCreatedAtFormattedAttribute(){
   return $this->created_at->format('H:i d, M Y');
}

public function getUpdatedAtFormattedAttribute(){
   return $this->updated_at->format('H:i d, M Y');
}
21 يناير 2024 2,670 مشاهدة
Eloquent

إستخدام DB transactions

اذا كنا نتعامل مع علمية إدخال لجدولين، ربما يحصل خطأ أثناء إدخال البيانات للجدول الثاني، بالتالي يجب عمل تراجع عن البيانات المدخلة للجدول الأول، لذلك ينصح بإستخدام Transactions

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);
    DB::table('posts')->delete();
});

للمزيد من هنا

21 يناير 2024 2,964 مشاهدة
Eloquent

إخفاء بعض الحقول في eloquent

عند عمل إستعلام بإستخدام eloquent إذا كنا نريد إخفاء بعض الحقول من النتائج، ببساطه يمكن إضافة makeHidden

Snippet::all()->makeHidden(['created_at', 'updated_at']);
21 يناير 2024 2,648 مشاهدة
DB Raw

إستخدام db raw للقيام بعمليات calculation في query

 

يفضل إستخدام دوال DB Raw مثل whereRaw لعمل عمليات حسابيه مباشرة في جملة sql حيث تظهر النتائج بشكل أسرع، مثال اذا أردنا جلب المستخدمين الذين قامو بالتسجيل والفعالين خلال 30 يوم

User::where('active', 1)
    ->whereRaw('TIMESTAMPDIFF(DAY, created_at, updated_at) > ?', 30)
    ->get();
21 يناير 2024 2,840 مشاهدة
Eloquent

البحث حسب التاريخ في laravel

عند جلب البيانات حسب جدول التاريخ بدلا من إستخدام 

User::orderBy('created_at', 'desc')->get();

نستطيع عمل ذلك بشكل أسرع، ويتم الترتيب بشكل desc

User::latest()->get();

بالوضع الإفتراضي latest تقوم بالترتيب حسب حقل created_at

اذا كنا نريد الترتيب بشكل ascending يمكن إستخدام oldest

User::oldest()->get();

كما نستطيع تغيير جدول البحث الإفتراضي من created_at الى updated_at

$lastUpdatedUser = User::latest('updated_at')->first();
21 يناير 2024 2,975 مشاهدة
Eloquent

البحث في laravel بإستخدام firstOrFail

 بالإضافة إلى findOrFail، يوجد دالة firstOrFail حيث تقوم بإرجاع صفحة 404 اذا لم يكن هناك نتائج للبحث

$user = User::where('email', ccc@ccc.com')->firstOrFail();
21 يناير 2024 2,787 مشاهدة
Model

تغيير حقل البحث الإفتراضي في eloquent find, findOrFail

بالوضع الإفتراضي يتم البحث في لارافيل بإستخدام find, findOrFail في حقل id، لكن اذا كنا نريد تغيير هذا الحقل يجب إن يتم تحديد ذلك في الـ model

model

class Product extends Model{
    protected $primaryKey = 'title';
    //tell Laravel to use title as primary key
}

eloquent

public function search(Request $request){
    $user = Product::findOrFail($request->title);
    return $user;
}
21 يناير 2024 2,929 مشاهدة
Eloquent

إستخدام dd بشكل أسرع

عوضا عن إستخدام dd($result)  بالإمكان وضع ->dd() كـ method مباشرة في نهاية جملة query او collection

// Instead of
$users = User::where('name', 'Ethar')->get();
dd($users);
// Do this
$users = User::where('name', 'Ethar')->get()->dd();
21 يناير 2024 2,736 مشاهدة
Carbon

الحصول على التاريخ دون الدقائق / الثواني بإستخدام Carbon

اذا كنا نريد الوقت دون الدقائق / الثواني، بالإمكان إستخدام دوال Carbon الجاهزه مثل setSeconds(0) و setMinutes(0)

// 2020-04-20 08:12:34
echo now();
// 2020-04-20 08:12:00
echo now()->setSeconds(0);
// 2020-04-20 08:00:00
echo now()->setSeconds(0)->setMinutes(0);
// Another way - even shorter
echo now()->startOfHour();
21 يناير 2024 2,593 مشاهدة
Eloquent

الترقيم المبسط للصفحات simplePagination

في ترقيم الصفحات pagination إذا كنا نريد فقط next/previous عوضا عن الأرقام، فقط نستبدل paginate بـ simplePaginate، كما أن هذه الطريقة تخفف حمل على قاعدة البيانات fewer DB queries

// Instead of 
$users = User::paginate(10);
// You can do this
$users = User::simplePaginate(10);
21 يناير 2024 2,618 مشاهدة