اذهب إلى المحتوى
  • 0

إستخدام when في laravel للتخلص من الشروط

Mahmoud Alrashidi

السؤال

أحاول التخلص من الشروط في الكود التالي:

if ($this->searchTerm) {
  $searchTerm = '%' . $this->searchTerm . '%';
  $getSales = Shoppingcart::where('trans_code', 'LIKE', $searchTerm)
    ->select('trans_code', 'created_at',  DB::raw("SUM(sub_total) as total"))
    ->groupBy('trans_code')
    ->paginate(10);
} else {
  $getSales = Shoppingcart::with(['user'])
    ->select('trans_code', 'created_at',  DB::raw("SUM(sub_total) as total"))
    ->groupBy('trans_code')
    ->paginate(10);
}

و تقليصه قليلا عن طريق إستخدام when كيف يُمكنني عمل ذلك حاولت لكن لم أستطع.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يُمكنك إستخدام when بالشكل التالي:

$getSales = Shoppingcart::when($this->searchTerm, function ($query, $searchTerm) {
  return $query->where('trans_code', 'LIKE', "%{$searchTerm}%");
}, function ($query) {
  return $query->with('user');
})->select('trans_code', 'created_at',  DB::raw("SUM(sub_total) as total"))
  ->groupBy('trans_code')
  ->paginate(10);

يُمكنك الإطلاع على توثيق موسوعة حسوب: البنود المشروطة (Conditional Clauses) و ستجد مثال يُشابه لما تريد في هذه الفقرة:

يُنفّذ التابع when النطاق المُغلق المحدّد Closure فقط عندما تكون المعاملة الأولى true. في حالة كانت المعاملة الأولى false لن يُنفّذ النطاق المغلق Closure. تستطيع تمرير نطاق مُغلق Closure آخر كثالث معامل للتابع when. سيُنفّذ هذا النطاق المُغلق في حالة كانت المعاملة الأولى false. 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...