Laravel Eloquent: 如何构建包含 OR 和 AND 组合的复杂 WHERE 条件?
大家好!我是 Laravel 和 Eloquent 的新手,在构建同时使用 OR 和 AND 的复杂 SQL WHERE 条件查询时遇到了问题。
我有一个 `products` 表,包含字段:`status`、`category_id`、`price`、`is_featured`。我需要选择满足以下两个条件之一的商品:
1. 商品处于活动状态(status = 'active')且价格低于 1000(price < 1000);
2. 或者商品是精选商品(is_featured = 1)且属于 id = 5 的分类(category_id = 5)。
也就是说,在 SQL 中它看起来像这样:
```sql
SELECT * FROM products
WHERE (status = 'active' AND price < 1000)
OR (is_featured = 1 AND category_id = 5);
```
我尝试在 Eloquent 中使用 `where()` 和 `orWhere()`,但结果一团糟。例如:
```php
$products = Product::where('status', 'active')
->where('price', '<', 1000)
->orWhere('is_featured', 1)
->where('category_id', 5)
```