Laravel 4.2 Eloquent动态查询

时间:2016-03-02 13:39:01

标签: php laravel model-view-controller orm eloquent

我试图通过基于8个以上可选输入的物品模型检索项目集合。

我将命名可选输入,例如项目名称'项目代码'项目颜色'并且希望能够仅使用已完成的输入作为查询中的where子句。

我找到了一个Laracast,我认为我已经解释了如何能够实现这一点,但我似乎无法使其发挥作用。

我曾想象过这样的代码:

$query = Item::select();

if(Input::has('name')) {
    $query->where('ItemName', Input::get('name'));
}

if(Input::has('code')) {
    ....
}

$query->get();

我用以下代码测试了我的假设。

如果我使用以下代码:

$query = Item::select()->where('ItemCode', '0605')->get();

我收到了按预期返回的5个项目的集合,但如果我使用以下代码:

$query = Item::select();
$query->where('ItemCode', '0605')->get();

我得到了Illuminate \ Database \ Eloquent \ Builder对象,而不是我期望的项目集合。

任何人都可以看到我做错了什么或者告诉我实现这个目的的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

疯狂的想法,但只是为了确定。也许你想要这个?

$query = Item::select();

if(Input::has('name')) {
    $query->where('ItemName', Input::get('name'))
}

if(Input::has('code')) {
    ....
}

$query = $query->get();