Laravel Eloquent Query 使用 WHERE 和 OR AND OR?

新手上路,请多包涵

怎么说 WHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)

对于更复杂的查询,我应该使用原始 SQL 吗?

原文由 Farzher 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 709
2 个回答

利用 逻辑分组(Laravel 7.x / 4.2 )。对于您的示例,它将是这样的:

 Model::where(function ($query) {
    $query->where('a', '=', 1)
          ->orWhere('b', '=', 1);
})->where(function ($query) {
    $query->where('c', '=', 1)
          ->orWhere('d', '=', 1);
});

原文由 rmobis 发布,翻译遵循 CC BY-SA 4.0 许可协议

ModelName::where(function ($query) use ($a) {
    $query->where('a', '=', $a)->orWhereNull('a');

})
->where(function ($query) use ($b,$c) {
    $query->where('b', '=', $b)
          ->orWhere('c', '=', $c);
})->where('d',$d);

输出查询:

SELECT * FROM ModelName WHERE (a=‘a’ or a is null) AND (b=‘b’ or c=‘c’) AND d=’d’;

原文由 Debendra 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题