雄辩 - 拉拉维尔。根据输入用户获取行。输入为空时获取所有内容

时间:2014-12-12 17:33:17

标签: mysql laravel eloquent

我正在尝试获取用户在表单中提供的信息的获取结果。 在表单中,用户可以选择$city$skillLevelprovince$category

显然,当表单保留为空时,它将返回所有行。填写每个字段时,除了$city之外,它将从每个城市返回带有所选选项的结果。

我仍然很有说服力,我现在已经坚持了很长一段时间。希望有人可以帮助我。

这是控制器,它调用模型中的函数来检索结果:

/**
* Returns all vacatures
 * @param string $city
 * @param string $skillLevel
 * @param string $province
 * @param string $category
 */
public function vacatureOverzicht($city, $skillLevel, $province, $category)
{
    $vacatures = $vacatures = with(new Vacature)->getVacatures($city, $skillLevel, $province, $category);

    return View::make('vacatures')->with('vacatures', $vacatures);
}

这是我的模型功能(显然仍然是空的):

/**
     * Return results with options given by user
     *
     * @param $city
     * @param $skillLevel
     * @param $province
     * @param $category
     */
    public function getVacatures($city, $skillLevel, $province, $category) {
          $vacatures = DB:table('vacatures')
                        // Do stuff to select rows
                       ->get();
          return $vacatures;
    }

1 个答案:

答案 0 :(得分:1)

不是一个一个地传递它们,而是创建一个数组并将其传递给:

public function getVacatures(array $filter = [])
{
    $columns = [
        'city',
        'province',
        'category',
        'skill_level',
    ];

    $query = $this->newQuery();

    foreach ($filters as $column => $value)
    {
        if ( ! in_array($column, $columns)) continue;

        $query->where($key, $value);
    }

    return $query->get();
}