【发布时间】:2023-03-14 15:31:01
【问题描述】:
我有以下存储库Products,每个产品可以有很多Categories和很多Bidders
我想要实现的是以下(没有存储库)
$products = Products::whereHas('categories', function ($category) {
})->whereHas('bidders', function ($bidder) {
})->get();
这很好用,但是,我正在尝试使存储库就位,并且您仍然可以执行whereHas 查询,因此在我的存储库中我创建了一个方法:
public function whereHas($attribute, \Closure $closure = null)
{
return $this->model->whereHas($attribute, $closure);
}
这很好用,但前提是我在主查询中使用其中一个,而如果我使用多个:
$products = $this->products->whereHas('categories', function ($category) {
$category->where('id', '=', 1);
})->whereHas('bidders', function($bidders) {
})->get();
我收到以下错误:
Unknown column 'has_relation'
找不到列:1054 未知列 'has_relation' 在 'where 子句' (SQL: select * from
productswhere exists (select * fromcategories内部连接 products_categoriescategories.id=products_categories.categories_id其中products.id=products_categories.products_id和id= 1) 和 (has_relation= 部分))
我看到的问题是它在第一个 whereHas 上返回一个项目集合,这意味着它无法计算第二个。关于我哪里出错的任何想法?
【问题讨论】:
标签: laravel eloquent repository-pattern