【发布时间】:2015-01-29 15:41:17
【问题描述】:
我的产品就是这个代码。我使用 with() 方法来加载变化关系。 我有一些过滤器。但如果不存在任何变体,我会得到 Product。
我怎样才能只获得存在变化的这个产品?
$query = Product::with(array(
'variations' => function($query) use($filters){
if(isset($filters['price_start']) && !empty($filters['price_start'])){
$query->groupBy('id')->having(DB::raw('SUM(price_base + price_engraving)'), '>=', $filters['price_start']);
}
if(isset($filters['price_end']) && !empty($filters['price_end'])){
$query->groupBy('id')->having(DB::raw('SUM(price_base + price_engraving)'), '<=', $filters['price_end']);
}
if(isset($filters['q_magazine_start']) && !empty($filters['q_magazine_start'])){
$query->where('q_magazine', '>', $filters['q_magazine_start']);
}
if(isset($filters['q_magazine_end']) && !empty($filters['q_magazine_end'])){
$query->where('q_magazine', '<', $filters['q_magazine_end']);
}
return $query;
}
))->whereIn('id', $productList);
【问题讨论】:
标签: php laravel eloquent eager-loading