【发布时间】:2018-02-05 18:30:11
【问题描述】:
我有一个 Profiles 模型,它有一些关系(belongsTo、HasManyThought)。
我想根据几个参数,一个接一个地过滤。
例如:
- 选择输入以选择类别(hasManyThough 关系)。
- 选择输入以选择位置。
- 一个文本输入,用于键入几个单词并搜索我的模型(和关系)。
个人资料模型:
class Perfis extends Model
{
protected $guarded = [];
public function usuario(){
return $this->belongsTo(User::class, 'user_id');
}
public function enderecos(){
return $this->belongsTo (Enderecos::class);
}
public function categorias(){
return $this->belongsToMany (
Categorias::class,
'perfis_categorias'
);
}
// Filtros
public function scopeFilter($query, $filtros){
return $filtros->apply($query);
}
}
个人资料控制器
公共函数索引(PerfisFiltros $filtros, Request $request) { $perfis = Perfis::filter($filtros)->get();
return view('frontal.perfis.index', [
'perfis' => $perfis,
]);
}
我的过滤器
public function apply($builder)
{
if(! $this->request->has('_token')) return $builder;
if($this->request->has('_token')){
return $builder
->when($this->request->has('fCat'), function ($fCategoria) {
$fCategoria->whereHas('categorias', function ($fCategoriaHas){
$fCategoriaHas->where('categorias_id', $this->request->fCat);
});
})
->when($this->request->has('fEstado'), function ($fEstado){
$fEstado->whereHas('enderecos', function ($fEstadoHas){
$fEstadoHas->where('estados_id', $this->request->fEstado);
});
});
}
}
【问题讨论】:
-
那么,有什么问题?
-
问题是我只能通过一个参数过滤。
标签: php laravel eloquent builder