LAravel查询生成器 - 与查询有点不同

时间:2015-09-17 16:30:20

标签: mysql laravel laravel-4 laravel-5 query-builder

我有一个像这样的项目表 -

asdf

我想选择公司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;

但它没有用。

有人可以帮忙吗?

2 个答案:

答案 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