【发布时间】:2016-09-09 09:15:23
【问题描述】:
我正在尝试编写一个查询,其中返回所有项目(产品),如果该特定项目存在关系(多对多),那么该信息也包括在内。当我在查询中包含该关系时,它只返回具有该关系的项目,而不是每个项目,无论该关系是否存在。
这是我目前的查询:
public static function filterProduct($vars) {
$query = Product::query();
if((array_key_exists('order_by', $vars)) && (array_key_exists('order', $vars))) {
$query = $query->orderBy($vars['order_by'], $vars['order']);
}
if(array_key_exists('category_id', $vars) && $vars['category_id'] != 0) {
$query = $query->whereHas('categories', function($q) use ($vars) {
return $q->where('id', $vars['category_id']);
});
}
if(array_key_exists('manufacturer_id', $vars)) {
$query = $query->whereHas('manufacturer', function($q) use ($vars) {
return $q->where('id', $vars['manufacturer_id']);
});
}
$query = $query->whereHas('options', function($q) use ($vars) {
});
如您所见,当一个项目具有“选项”关系时,我需要让该特定行在返回日期中包含该关系的详细信息。使用代码虽然它只返回具有这种关系的项目而不是每个项目。
有人可以告诉我这是如何实现的吗?
谢谢!
【问题讨论】:
标签: laravel eloquent many-to-many