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

السؤال

نشر

عند الاستعلام الشرطي في Laravel اقوم باستخدام WHERE لتحقيق أكثر من شرط, هكذا:

$results = User::where('this', '=', 1)
    ->where(one, '=', 1)
    ->where('two', '=', 1)
    ->where('three', '=', 1)
    ->where('four', '=', 1)
    ->where('five', '=', 1)
    ->where('six', '=', 1)
    ->get();

هل توجد طريقة أخرى أكثر فاعلية ؟

Recommended Posts

  • 0
نشر

تدعم Laravel الاستعلام المتعدد عن طريق تمرير مصفوفة تحتوي على الشروط بهذا الشكل:

['one', '=', 'value' ]

ويتم الاستعلام باستخدام الشروط المتعددة بهذه الطريقة:

$results = User ::where([
    ['one', '=', 'value_1'],
    ['two', '<>', 'value_2'],
    [COLUMN, OPERATOR, VALUE],
    ...
])

وبهذه الطريقة يتم الاستعلام مع الشروط المطلوبة دفعة واحدة دون الحاجة إلى تكرار استدعاء where

  • 0
نشر

في Model الخاص بالمتحكم قم بوضع Scopes

public function scopeActive($query)
{
    return $query->where('active', '=', 1);
}

public function scopeThat($query)
{
    return $query->where('that', '=', 1);
}

ثم بعد ذلك , يمكنك استدعاء هذه  Scopes أثناء إنشاء استعلامك

$users = User::active()->that()->get();

ايضا يمكنك استخدام SubQueries 

$results = User::where('this', '=', 1)
       ->where('that', '=', 1)
       ->where(
           function($query) {
             return $query
                    ->where('this_too', 'LIKE', '%fake%')
                    ->orWhere('that_too', '=', 1);
            })
		->get();

 

  • 0
نشر

بما أن كل جمل where التي تستعملها تستخدم المعامل = فيمكنك أن تقوم بجمع كل جمل where معًا في مصفوفة واحدة بالشكل التالي:

$columns = ['col_1' => 1, 'col_2' => 2];
$results = User::where($columns)->get();

سيؤدي الكود السابق إلى تنفيذ جملة SQL التالية:

SELECT * FROM users
  WHERE (col_1 = 1 AND col_2 = 2)

بالتوفيق.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...