laravel 查询生成器或在哪里

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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%');

【讨论】:

不会生成分组表达式,而是在不带括号的查询中添加或条件

以上是关于laravel 查询生成器或在哪里的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何优化多个查询

或在我的 SQL 查询(使用 CodeIgniter 生成)中不使用 jQuery DataTables

Laravel在哪里执行cmd命令以生成控制器模板

laravel 查询生成器查询有啥问题?

Laravel 查询生成器 从子查询中选择

laravel,查询生成器,(或)查询未按预期工作