向Laravel模型添加过滤器辅助方法

f7n*_*f7n 0 php laravel eloquent eloquent-relationship laravel-5.8

我想在Laravel Product模型中添加一个方法,该方法按nameattr 过滤并返回所有匹配产品的集合,这就是我得到的:

Product.php

public function filterByName($query)
{
    return $this->where('name','LIKE','%'.$query.'%')->get();
}
Run Code Online (Sandbox Code Playgroud)

ProductController.php

$products = collect(new Product);
$products->filterByName($name);
Run Code Online (Sandbox Code Playgroud)

正确的用法是什么?我需要使用QueryFilter吗?

Pra*_*ahu 5

您在谈论范围吗?

public function scopeByName($query, $param)
{
    return $query->where('name','LIKE','%'.$param.'%');
}
Run Code Online (Sandbox Code Playgroud)

然后

$products = Product::byName('xyz')->get();
Run Code Online (Sandbox Code Playgroud)