ich在我的数据库上有一个查询,我得到所有已经结束的配置文件 25,但我想在此查询后使用不同的参数再次过滤我的结果。 例如哪个配置文件是男性还是女性,单身,恋爱,关系等。
因为我的结果有很多不同的查询,所以我首先尝试构建一个switch语句。 但随着时间的推移,这种情况正在增长,而且我认为它不是真正的优秀代码选择。 annonye可以帮助我更好地解决我的问题吗?
型号:
public static function getProfilesOverTweentyFive()
{
return static::where(['age' > 25]);
}
控制器:
// Filtering the Result
public function filterList($key)
{
switch($key)
{
case 'male':
return $filter = array('gender' , '=', 'male');
break;
case 'female':
return $filter = array('gender' , '=', 'female');
break;
case '10':
return $filter = array('looking', 'LIKE', '%Man%');
break;
case '10':
return $filter = array('looking', 'LIKE', '%Women%');
break;
// etc
}
}
// Show the filtering Result
public function show()
{
$filter = Input::get('filter');
$column = $this->filterList($filter)[0];
$operator = $this->filterList($filter)[1];
$key = $this->filterList($filter)[2];
$profileList = Profile::getProfilesOverTweentyFive()->where($column,$operator,$key)->paginate(15);
}
答案 0 :(得分:2)
您可以使用query scopes在您的雄辩模型中为每个查询添加范围
public function scopeMale($query)
{
return $query->where('gender', '=', 'male');
}
public function scopeOverTwentyFive($query)
{
return $query->where('age', '>', 25);
}
然后在你的控制器中:
$users = App\User::male()->overTwentyFive()->get();