Laravel 包含关系结果(如果存在)

Laravel include relationship result if one exists

我正在尝试编写一个查询,其中返回所有项目(产品),如果该特定项目(多对多)存在关系,则该信息也包括在内。当我现在在查询中包含关系时,它只有 returns 个具有该关系的项目而不是每个项目,无论该关系是否存在。

这是我目前的查询:

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) {

        });

如您所见,当某个项目具有 'options' 关系时,我需要让该特定行在返回日期中包含该关系的详细信息。使用代码,尽管它只返回具有这种关系的项目而不是每个项目。

有人可以告诉我这是如何实现的吗?

谢谢!

我觉得有点傻,因为它是如此简单,但是通过添加这个解决了:

$query = $query->with('options');