2016-10-29 2 views
0

Интересно, есть ли что-то вроде необязательного запроса. Например:Laravel optional where() query

Выберите * из таблицы, где X должно быть = 2, а Y должно быть равно 0 или 1?

ответ

1

Вы можете попробовать, как:

$userId = $request->input('userId'); 
->where('X', 2) 
->where(function($q) use($userId) { 
    $q->where('Y', $userId) 
     ->orWhere('Y', 1) 
}) 
+0

Как передать динамическое значение этому? Например '' $ q-> где ('Y', $ userId) '' – user2636197

+0

Ответ обновлен. –

+0

спасибо, что сработал, я соглашусь через 7 минут, как только это позволит мне – user2636197

0

Есть целый ряд способов для достижения этой цели.

Вы можете получить объекты обратно через модель тоже:

$collection = Mymodel::where('x', 2)->where('y', 0)->orWhere('y', 1)->get(); 

Или как Amit показывает выше.

0

Вы можете использовать orWhere() для простых случаев, но в вашем случае вы должны использовать функцию возврата, где положение для у как:

$result = $field->letters()->where('x', 2)->where(function ($q) { 
    $q->where('y', 0)->orWhere('y', 1); 
})->get(); 

Примечание: заменить буквы с объектной моделью.