Laravel Eloquent条件内部查询,如PLSQL

时间:2015-08-01 01:51:20

标签: laravel eloquent

我正在尝试在Laravel查询中做条件语句,这可能吗? 在PLSQL中,我会执行以下操作来执行IF ELSE,我可以在Laravel Eloquent中执行此操作吗?

select *
from x
where x.id = 1
and ( (varName = 'all') OR  (x.name = 'red') )

正在发生的事情是用户从下拉框(varName)中挑选,并选择所有颜色为“全部”,或选择单个颜色。

我知道编写两个IF Else语句并在每个条件下复制SQL会很容易,但是我有一个非常大的SQL,并且不希望为了简单的事情而复制整个SQL两次。在Laravel可以这样做吗?或者还有其他方法可以实现它吗?

1 个答案:

答案 0 :(得分:1)

您可以使用whereRaw,例如

...
->where('x.id','=',1)
->whereRaw('(varName = "all" or x.name="red")')
...

请注意,默认情况下不会对原始查询进行转义,因此请务必在处理用户输入时执行此操作。