如何在Laravel中使用各种可选参数组装查询?

时间:2013-10-01 12:42:48

标签: php mysql web laravel laravel-4

我在数据库中做了一项研究。并不总是我将使用所有参数。用户可能想要研究名称,但不是地址或其他方式。

我尝试使用advanced wheres甚至unions,但似乎都没有用。所有这些都给我一个SQL错误“一般错误:1221 UNION和ORDER BY的使用不正确”。

这是我试过的一段代码

$city_name = ($city_name != null) ? DB::table('cities')->where('name', 'LIKE', "%$city_name%") : DB::table('cities');
$state  = ($state_id != '--') ? DB::table('cities')->where('state_id', '=', $state_id) : DB::table('cities');

$cities = DB::table('cities')->union($city_name)->union($state)->orderBy('name')->get();

但它给了我上述错误。

我真正想做的是,在动态选择我在查询中输入的参数,甚至“动态”组装它。 有谁知道该怎么做?

如果我不清楚,请在评论中告诉我......

1 个答案:

答案 0 :(得分:2)

我认为你需要这样的东西:

$query = DB::table('cities');

if ($city_name != null)
{
    $query->where('name', 'LIKE', "%$city_name%");
}

if ($state_id != '--')
{
    $query->where('state_id', '=', $state_id);
}

$cities = $query->orderBy('name')->get();