我有一个像这样的项目表 -
我想选择公司ID为0和2的所有数据(公司ID可能是1,3,3,4,5,6,......)。
所以,我在Laravel Query Builder中所做的是 -
DB::table( 'project')
->where('project.is_archived', '=', 0)
->where('project.companyID', '=', 0)
->orwhere('project.companyID', '=', 2)
->get;
但它没有用。
有人可以帮忙吗?
答案 0 :(得分:2)
DB::table('project')
->where('is_archived', 0)
->whereIn('companyID', [0, 2])
->get();
这应该有效:)
答案 1 :(得分:1)
除了mimo的解决方案,您还可以使用回调或特殊where
方法组合语句。
类似于:
DB::table('project')
->where('is_archived', 0)
->orWhere(function(Builder $query) {
$query
->where('companyID', 0)
->where('companyID', 2)
});
会创建此声明:
SELECT * FROM project WHERE (is_archived = 0) AND (companyID = 0 OR companyID = 2)
您也可以使用简单的->where(function($query) {})
执行此操作,您可以将封装的$boolean
语句的where()
参数更改为'或' (这可以允许更复杂的陈述)
请参阅Laravel 5.1文档Parameter Grouping