如何查询变形到关系

how to Querying Morph To Relationships

尝试在文档的帮助下查询 laravel 8 中的 Polymorphic,但显示错误

BadMethodCallException: Call to undefined method App\Models\Product::keywordable()

这是我的模型

Keyword.php

public function products()
    {
        return $this->morphedByMany(Product::class, 'keywordable');
    }

Product.php

 public function keywords()
    {
        return $this->morphToMany(Keyword::class, 'keywordable');
    }

查询

$products = Product::whereHasMorph(
                    'keywordable',
                    [Keyword::class],
                    function (Builder $query) use ($request) {
                        $query->where('slug',  $request->keyword);
                    }
                )->get();

Keywordable 与您的产品型号无关。 您可以使用 whereHas 方法

按关键字搜索

使用 whereHas 方法

    $products = Product::wherHas( 'keywords', function ($query) use ($request) {
        $query->where('slug',  $request->keyword);
    })->get();

如果您有其他关系,请使用 whereHasMorph

    $products = Product::wherHasMorph( 'keywords', [Keyword::class], function ($query) use ($request) {
        $query->where('slug',  $request->keyword);
    })->get();