日安!我目前使用的是laravel包Tucker-Eric/EloquentFilter
。我想知道你过滤商品品牌的方法是什么。我有Brand
和Items
两张桌子。Item
属于Brand
,而Item
是使用口才滤波器的那个。在我的前端,我有一个场景,如果我输入项目的名称,所有的项目都会显示出来。此外,如果我键入品牌名称,则会显示具有该品牌的所有项目。提前谢谢。顺便说一句,这是我的ItemFilter代码
public function name($name)
{
return $this->whereLike('name', $name);
}
public function brand($brands)
{
return $this->whereIn('brand_id', $brands);
}
public function category($categories)
{
return $this->whereIn('category_id', $categories);
}
public function type($type)
{
return $this->whereIn('type_id', $type);
}
public function max($price)
{
return $this->where('srp', '<=', $price);
}
public function min($price)
{
return $this->where('srp', '>=', $price);
}
}
发布于 2019-11-07 10:24:00
尝尝这个。
在brand function
中更改查询。
public function brand($brands)
{
return $this->whereHas('brand', function ($query) use ($brands) {
$query->whereIn('id', $brands);
});
}
item
模型的belongsTo
关系应为brand
。
发布于 2020-02-13 11:46:37
您希望在过滤器中使用related
方法。您可以添加一个brandName
方法和brand_name
查询参数来将该数据传递给related
。
总的来说,它看起来像是:/my/url?brand_name=some+brand
public function brandName($brandName)
{
$this->related('brand', 'name', $brandName);
}
或者,如果您想对brand
的名称执行whereLike
public function brandName($brandName)
{
$this->related('brand', function($query) use ($brandName) {
return $query->whereLike('name', $brandName);
});
}
related
方法将收集对该关系的所有查询,并将它们全部封装在一个whereHas
查询中,用于对该过滤器中相关模型的所有调用。
https://stackoverflow.com/questions/58740800
复制相似问题