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

السؤال

نشر

أحاول أن أحصل على كل المنتجات من قاعدة البيانات والتي تحقق مجموعة من الشروط، يمكنني الحصول على ما أريده تمامًا من خلال إستعلام SQL التالي:

SELECT * FROM posts
WHERE (col_1 = 123 OR col_2 = 123) AND (col_3 = 456 OR col_4 = 456);

كيف يمكنني تحديد مجموعة من الشروط في Eloquent كما في إستعلام SQL السابق؟

Recommended Posts

  • 1
نشر

يمكنك تحديد مجموعة شروط عن طريق السطر التالي

$query->where([
    ['column_1', '=', 'value_1'],
    ['column_2', '<>', 'value_2'],
    [COLUMN, OPERATOR, VALUE],
    ...
])

أما إذا أردت الدمج ما بين WHERE , AND يمكنك استخدام الأسطر التالية

$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...];

// if you need another group of wheres as an alternative:
$orThose = ['yet_another_field' => 'yet_another_value', ...];

ثم

$results = User::where($matchThese)->get();

// with another group
$results = User::where($matchThese)
    ->orWhere($orThose)
    ->get();

لتعادل نفس نتيجة تلك الأسطر

SELECT * FROM users
  WHERE (field = value AND another_field = another_value AND ...)
  OR (yet_another_field = yet_another_value AND ...)

 

  • 1
نشر

يمكننا لكل عبارة شرطية مرتبطة ب And فصلها ضمن عبارة where مستقلة، أما الشروط التي بينها علاقة Or يمكننا كتابتها مباشرة ضمن نفس الاستعلام في نفس عبارة where

أي أن الاستعلام السابق يمكننا تعديله ليصبح

DB::table("posts")
->where(DB::raw("(col_1 = 123 or col_2 = 123)"))
->where(DB::raw("(col_3 = 456 or col_4 = 456)"))
->get();

يمكنك الإطلاع على laravel #advanced-wheres

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...