搜索 laravel 8 中的关系

searching with relationship in laravel 8

我有一个Category模型,和product模型,它们之间有关系...所以现在我想做一个搜索,当用户写类别名称时,我需要return 此类别中的所有产品,表格和关系都是正确的....我试过这种方法,但没有用:

其中($q)是输入文本名称:-

 $catSearches = Category::whereHas('products', function ($query) use ($q){
        $query->where('name', 'like', '%'.$q.'%');
    })
        ->with(['products' => function($query) use ($q){
            $query->where('name', 'like', '%'.$q.'%');
        }])->get();

也试过这种方法,同样的问题:

$catSearches = Category::with('products')->where('name', 'LIKE', "%{$q}%" )->get();

第二种格式是正确的,但没有 {}

$catSearches = Category::with('products')->where('name', 'LIKE', '%'.$q.'%' )->get();

如果您只需要产品(没有类别)

$products = Products::whereHas('category', function($categoryQuery) use ($q){
    $categoryQuery->where('name', 'LIKE', '%'.$q.'%' );
})->get();

如果您只想 return 产品而不是类别内的产品,则需要采用其他方式。

$products = Product::whereHas('category', function ($q) use ($search) {
        $q->where('name', 'LIKE', '%' . $search . '%');
})->get();

它将 return 所有匹配类别名称的产品。