我有疑问如何巧妙地处理条件问题。 我有n个字段过滤器,例如:年龄,姓名,性别等。
现在我可以使用动态范围来处理这个问题:
public function scopeAge($query, $age)
{
if ($age) {
return $query->where('age', $age);
}
return $query;
}
以及其他字段等。
但是我需要更多通用的例子(写所有字段都有点麻烦)。使用Laravel可以想出一些东西吗?我想到的课程例如:UserQuery
。
class UserQuery
{
private $query;
public function __construct($query)
{
$this->query = $query;
$this->build();
}
private function build()
{
$this->appendAge();
$this->appendName();
}
private function appendAge()
{
$age = Input::get('age');
if ($age) {
$this->query->where('age', $age);
}
}
private function appendName()
{
$name = Input::get('name');
if ($name) {
$this->query->where('name', $name);
}
}
public function toQuery()
{
return $this->query;
}
}
在模型中可以称为:
public function scopeFilters($query)
{
$userQuery = new UserQuery($query)
return $userQuery->toQuery();
}
这只是我的想法,也许有人会更好。