我提出了一个查询,其中还有"Licencies"
来自structure_id
的{{1}}与4
不同的结果。只有where子句,一切都很好,但如果我有一个orWhere的另一个条件,那么查询显示我也来自不同structure_ids ...
任何人都知道正确的查询只有两个where子句获得良好的结构ID?非常感谢提前
这里是我的查询:
$licencies = Licencies::where('structure_id' , '4')->where('statut_licence_id' , '2')->orWhere('valid_licence_id' , '1')->get();
这是我运行代码时的查询:
select * from `licencies` where `structure_id` = '4' and `statut_licence_id` = '2' or `valid_licence_id` = '1'
但是在结果中我还获得了来自structure_id = 5的许可证,例如
答案 0 :(得分:2)
如果您想获取具有structure_id 4的所有记录,但是使用statut_licence_id'2'或valid_licence_id 1,请尝试以下操作:
$licencies = Licencies::where('structure_id' , '4')
->where(function($query) {
$query->where('statut_licence_id' , '2')
->orWhere('valid_licence_id' , '1')
})->get();
在此处链接中查看参数分组:https://laravel.com/docs/master/queries#where-clauses
答案 1 :(得分:1)
您可以在查询生成器文档中找到有关使用多个where子句的更多信息:https://laravel.com/docs/5.4/queries#parameter-grouping。
答案 2 :(得分:0)
试试这个:(顺便说一句,你有3个不同的ID ... structure_id,statut_licence_id,valid_licence_id)确保你的逻辑正确,因为你的查询似乎没问题。
$licencies = Licencies::where(['structure_id' => '4','statut_licence_id' => '2'])->orWhere('valid_licence_id' => '1')->get();
它的逻辑是从structure_id = 5获得许可,因为如果valid_licence_id为1(它将与你的OR语句匹配)那么structure_id为什么不是5?