【问题标题】:SQL query in Laravel Eloquent QueryLaravel Eloquent Query 中的 SQL 查询
【发布时间】:2018-06-02 12:03:36
【问题描述】:

如何在 laravel eloquent 中生成如下查询

SELECT *
FROM TABLE
WHERE column1=value1 
and (
        (column2=value2 or column3=value3) 
     or (column4=value4 or column5=value5)
)

请帮忙。

【问题讨论】:

  • 到目前为止你尝试过什么?你看过文档吗?
  • 您能否就答案提供反馈?

标签: mysql laravel-5 eloquent


【解决方案1】:

您的查询可以表示为

SELECT * 
FROM table 
WHERE column1=value1 
AND (
       column2=value2 
    or column3=value3 
    or column4=value4 
    or column5=value5
)

要在 laravel 中使用上述内容,您可以遵循文档中的 Parameter Grouping 指南

DB::table('table')
    ->where('column1', $value1)
    ->where(function ($query) use ($value2, $value3, $value4, $value5) {
        $query->where('column2', $value2)
          ->orWhere('column3', $value3)
          ->orWhere('column4', $value4)
          ->orWhere('column5', $value5)
          ;
    })
    ->get();

【讨论】:

    【解决方案2】:

    您需要使用两个嵌套的where() 语句:

    DB::table('the_table')
        ->where('column', 'val')
        ->where(function ($q) {
            $q->where('column1', 'val1')
                ->orWhere('column2', 'val2');
        })
        ->where(function ($q) {
            $q->where('column3', 'val3')
                ->orWhere('column4', 'val4');
        })
        ->get()
    

    如果需要将变量传递给嵌套的where(),则需要在内联函数上添加use

    DB::table('the_table')
        ->where('column', $val)
        ->where(function ($q) use ($val1, $val2) {
            $q->where('column1', $val1)
                ->orWhere('column2', $val2);
        })
        ->where(function ($q) {
            $q->where('column3', 'val3')
                ->orWhere('column4', 'val4');
        })
        ->get()
    

    【讨论】:

      【解决方案3】:

      试试看

      DB::table('the_table')
          ->where('column1', 'value1')
          ->where(function ($query) {
              $query->where(function ($query) {
                  $query->where('column2', 'value2')
                      ->orWhere('column3', 'value3');
              })->orWhere(function ($query) {
                  $query->where('column4', 'value4')
                  ->orWhere('column5', 'value5');
              });
          })->get();
      

      【讨论】:

        猜你喜欢
        • 2015-02-13
        • 1970-01-01
        • 2021-11-16
        • 2016-07-25
        • 2020-05-15
        • 2019-04-19
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        相关资源
        最近更新 更多