fes*_*tie 50 php laravel eloquent
我有这样一张桌子:
table
- field1: tinyint
- field2: varchar (nullable)
- datefield: timestamp (nullable)
Run Code Online (Sandbox Code Playgroud)
现在我想得到所有条目,其中field1为1,field2为null,其中datefield小于X或null.我已经尝试过这样的事:
$query = Model::where('field1', 1)
->whereNull('field2')
->where('datefield', '<', $date)
->orWhereNull('datefield');
Run Code Online (Sandbox Code Playgroud)
但那不起作用.我总是得到datefield为null的每个条目.其他领域是什么并不重要.我还尝试将它分成2个查询:首先获取datefield小于X或null的每一行然后(基于它)获取field1为1且field2为null的每个字段.
结果是一样的.知道怎么做吗?
Jam*_*mes 104
听起来你需要使用高级where子句.
鉴于搜索field1
并且field2
是不变的,我们将按原样保留它们,但我们将datefield
稍微调整您的搜索.
试试这个:
$query = Model::where('field1', 1)
->whereNull('field2')
->where(function ($query) {
$query->where('datefield', '<', $date)
->orWhereNull('datefield');
}
);
Run Code Online (Sandbox Code Playgroud)
如果您需要调试查询并查看它无法正常工作的原因,则可以帮助查看它实际执行的SQL.您可以链接->toSql()
到您的eloquent查询的末尾以生成SQL.
归档时间: |
|
查看次数: |
111415 次 |
最近记录: |