gpt4 book ai didi

laravel - 如何在 Eloquent 中组合 WHERE 子句

转载 作者:行者123 更新时间:2023-12-02 18:03:08 24 4
gpt4 key购买 nike

我想在 Eloquent 中进行这种查询:

SELECT * FROM table WHERE status = 1 AND (type = 2 OR type = 3 OR type = 4)

我一直无法在 Eloquent 中找到一种简单的方法来做到这一点。如果我使用

Table::where('status', 1)->orWhere('type', 2)->orWhere('type', 3)...

这翻译成:

SELECT * FROM table WHERE status = 1 OR type = 2 OR type = 3 OR type = 4

这不是我需要的。为“status = 1”创建查询范围也会得到相同的结果。如何在 Eloquent 中运行此查询?

最佳答案

要对这样的 where 子句进行分组,您需要将一个闭包传递给 where() 方法,并在闭包内添加分组条件。因此,您的代码将类似于:

Table::where('status', 1)->where(function ($q) {
return $q->where('type', 2)->orWhere('type', 3)->orWhere('type', 4);
});

这将生成 SQL:

SELECT * FROM tables WHERE status = 1 AND (type = 2 OR type = 3 OR type = 4)

关于laravel - 如何在 Eloquent 中组合 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38949380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com