سوال بپرسید
1

اجرای چندین دستور where در لاراول به صورت همزمان

سوال بپرسید

من تو پروژه خودم از Eloquent لاراول استفاده می کینم و میخواستم ببینم چطور میشه با استفاده از دستور where لاراول چندین شرط را به صورت همزمان بررسی کرد؟

در حالت عادی این شرط ها را به صورت زیر می نویسم:

$results = User::where('this', '=', 1)
    ->where('that', '=', 1)
    ->where('this_too', '=', 1)
    ->where('that_too', '=', 1)
    ->where('this_as_well', '=', 1)
    ->where('that_as_well', '=', 1)
    ->where('this_one_too', '=', 1)
    ->where('that_one_too', '=', 1)
    ->where('this_one_as_well', '=', 1)
    ->where('that_one_as_well', '=', 1)
    ->get();

جواب درستی از این نحوه نوشتن می گیرم ولی نمیدونم که این کار درسته یا نه؟

برچسب ها:
گزارش سوال
پرسیده شده در 3 ماه پیش
آمار بازدید: 181

2 پاسخ

2
12 اسفند 97 در 17:29

اگر از لاراول 5.3 به بالا استفاده می کنید شما می توانید چندین شرط را با استفاده از آرایه ها ارسال کنید:

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

اما توجه داشته باشید که کدهای شما نیز به درستی کار می کند و با استفاده از آن می توانید چندین شرط پشت سر هم را ایجاد کنید.

pirniak (127)
3
12 اسفند 97 در 17:32

علاوه بر مواردی که دوست عزیزمون pirniak گفتند شما می توانید شرط را به صورت زیر بنویسید:

User::where(['column_1' => 'value_1','column_2' => 'value_2'])->get();

در این حالت کافیست ستون ها را با مقادیر جایگزین کنید. البته در صورتیکه بخواهید از دستورهای بزرگتر و کوچکتر هم بهره ببرید بهترین روش همین موردی بود که دوست عزیزمون در پاسخ قبلی ارسال کردند.