【问题标题】:laravel query builder or inside wherelaravel 查询生成器或在哪里
【发布时间】:2017-04-17 09:14:24
【问题描述】:

我有以下查询,我想知道这在 laravel 的查询构建器中是否可行:

SELECT * FROM table WHERE (column = value OR column = value2) AND column2 LIKE '%value3%'

【问题讨论】:

    标签: sql laravel laravel-5.3


    【解决方案1】:

    您的查询应如下所示:

    DB::table('table')
      ->where(function($q) use ($value, $value2) {
          $q->where('column', $value)
            ->orWhere('column', $value2);
      })
      ->where('column2', 'like', '%'.%value3.'%')
      ->get();
    

    如果你有多个值,你可以将它们放入一个简单的数组中并使用whereIn()

    DB::table('table')
      ->whereIn('column', $valuesArray)
      ->where('column2', 'like', '%'.%value3.'%')
      ->get();
    

    【讨论】:

      【解决方案2】:

      你可以在 where for ex 中使用闭包。

      \DB::table('table_name')
       ->where(function($q){
             $q->where('column', 'value1')
               ->orWhere('column', 'value2');
        })
        ->where('column2', 'LIKE', '%value3%');
      

      在这里查看https://laravel.com/docs/5.3/queries#parameter-grouping

      【讨论】:

        【解决方案3】:

        您可以根据需要进行查询

               DB::table('table_name')
              ->where('column', 'value1')
              ->orWhere('column', 'value2')
              ->where('column2', 'like', '%value3%');
        

        【讨论】:

        • 不会生成分组表达式,而是在不带括号的查询中添加或条件
        猜你喜欢
        • 2018-09-08
        • 2016-07-30
        • 2013-08-21
        • 2019-11-27
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        • 2015-12-13
        • 1970-01-01
        相关资源
        最近更新 更多