【问题标题】:How can I add brackets on the laravel eloquent? (Laravel 5.3)如何在 laravel eloquent 上添加括号? (Laravel 5.3)
【发布时间】:2017-08-07 02:58:53
【问题描述】:

我的查询是这样的:

SELECT * FROM message WHERE (seller_id = 1 OR buyer_id = 3) AND deleted_by NOT LIKE '%1%'

我想改成 laravel eloquent

我尝试这样:

Message::where('seller_id', auth()->user()->id)
       ->orWhere('buyer_id', auth()->user()->id)
       ->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')
       ->get();

但是,结果是这样的:

SELECT * FROM message WHERE seller_id = 1 OR buyer_id = 3 AND deleted_by NOT LIKE '%1%'

好像需要括号

如何在 laravel eloquent 上加括号?

【问题讨论】:

    标签: php mysql laravel laravel-5.3 laravel-eloquent


    【解决方案1】:

    你需要把你的 where 放在一个闭包里

    Message::where(function($query){
        $query->where('buyer_id', auth()->user()->id)
        ->orWhere('buyer_id', auth()->user()->id);
    })
    ->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')
    ->get();
    

    【讨论】:

    • 我还在 $query 实例之前添加了对象类型“Builder”。完整的 Builder 命名空间是“Illuminate\Database\Eloquent\Builder;”
    【解决方案2】:

    在这种情况下,使用闭包。

    $userId = auth()->user()->id;
    Message::where(function($q) use($userId){
        $q->where('buyer_id', $userId)
        ->orWhere('buyer_id', $userId);
    })
    ->where('deleted_by', 'not like', '%'.$userId.'%')
    ->get();
    

    【讨论】:

      【解决方案3】:
      Message::where(function ($query) {
          $query->where('seller_id', auth()->user()->id)
            ->orWhere('buyer_id', auth()->user()->id);
      })
      ->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')
      ->get();
      

      试试这个,也许你的问题会得到解决。

      【讨论】:

        【解决方案4】:

        试试这个:

        Message::where(function ($query) {
                    $query->where('seller_id', auth()->user()->id)
                          ->orWhere('buyer_id', auth()->user()->id);
                })->where('deleted_by', 'not like', '%'.auth()->user()->id.'%')->get();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-07-24
          • 2017-05-10
          • 2017-05-30
          • 2016-07-13
          • 2016-07-08
          • 2017-04-28
          • 2017-05-10
          相关资源
          最近更新 更多