【问题标题】:Laravel Eloquent orWhere issuesLaravel Eloquent orWhere 问题
【发布时间】:2018-07-03 01:00:37
【问题描述】:

一直在徘徊我的查询有什么问题应该像看起来一样简单。 它更像是我正在创建一个 select * from table where (a = 1 and b =2) 或 (a = 2 and b = 1) 类型的查询。这是我的雄辩。

return $query->where(function($q) use ($brand, $influencer, $agency){
    $q->where([
        'sender_id' => $brand,
        'receiver_id' => $influencer
    ]);
    $q->orWhere([
        'sender_id' => $influencer,
        'receiver_id' => $brand
    ]);
});

我的 eloquent 中有这个查询,但在调试栏中显示时它正在显示

select count(*) as aggregate
from `chat_messages`
where ((`sender_id` = '415' and `receiver_id` = '1159')
or (`sender_id` = '1159' or `receiver_id` = '415'))

我希望它在第二个括号组中是“AND”

select count(*) as aggregate
from `chat_messages`
where ((`sender_id` = '415' and `receiver_id` = '1159')
or (`sender_id` = '1159' AND `receiver_id` = '415'))

【问题讨论】:

  • 它在 Laravel 5.5.40 上运行

标签: mysql laravel eloquent


【解决方案1】:

如果您使用数组调用orWhere(),它会在前面和各个约束之间使用OR

使用这个:

return $query->where(function($q) use ($brand, $influencer, $agency){
    $q->where([
        'sender_id' => $brand,
        'receiver_id' => $influencer
    ])->orWhere(function($q) use ($brand, $influencer) {
        $q->where([
            'sender_id' => $influencer,
            'receiver_id' => $brand
        ]);                
    });
});

【讨论】:

  • @Kruze 如果它正在工作,那么接受它作为答案,供未来用户使用
猜你喜欢
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 2020-08-03
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多