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

كيفية الدمج بين OR و AND في Eloquent في لارافيل Laravel؟

Emad Saif

السؤال

أحاول أن أحصل على كل المنتجات من قاعدة البيانات والتي تحقق مجموعة من الشروط، يمكنني الحصول على ما أريده تمامًا من خلال إستعلام 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...