【发布时间】:2019-01-08 14:54:17
【问题描述】:
我正在开发电子商务应用程序,我在其中获取状态为 1 的产品。 但在某些情况下,我需要获取状态为 2 或 3 的产品。
我已经覆盖了newQuery 方法并在该方法中添加了status 1 的条件。现在我想为status 2 添加另一个条件,但是当我添加这个条件时,where 子句将在该列的 SQL 查询中重复(查询生成器的默认行为)。
下面是我的代码,
public function newQuery($excludeDeleted = true) {
return parent::newQuery($excludeDeleted)
->where('status', 1);
}
当我需要获取以下状态为 2 的产品时
return $query->where('status', 2);
那么形成的查询将如下所示
select * from `products` where `status` = 1 and `status` = 2
但我需要如下查询的输出
select * from `products` where `status` = 2
请提出方法。
【问题讨论】:
-
你不应该像这样覆盖
newQuery()。看看global scopes。
标签: php laravel laravel-5 eloquent laravel-query-builder