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

الاستعلام الشرطي المتعدد في Laravel

Mohammad Yousef3

السؤال

عند الاستعلام الشرطي في 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...