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

السؤال

نشر

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...