1
我試圖編寫一個查詢,其中返回所有項目(產品),並且如果該特定項目(多對多)存在關係,則包含該信息。當我在查詢中包含關係時,它只返回具有該關係的項目,而不是每個項目,而不管該關係是否存在。Laravel包含關係結果(如果存在的話)
這是我的時刻查詢:
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) {
});
正如你可以看到,當一個項目有「選擇」的關係,我需要有一個特定的行包括在返回的日期這種關係的細節。使用代碼,雖然它只返回具有此關係的項目,而不是每個項目。
有人可以告訴我這是如何實現的嗎?
謝謝!