Laravel 4.2 雄辩的动态查询

Posted

技术标签:

【中文标题】Laravel 4.2 雄辩的动态查询【英文标题】:Laravel 4.2 Eloquent Dynamic Query 【发布时间】:2016-03-02 13:39:01 【问题描述】:

我正在尝试通过基于 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 对象,而不是我期望的项目集合。

谁能看到我做错了什么或建议我实现这一目标的正确方法是什么?

【问题讨论】:

你到底想达到什么目的? @AlexeyMezenin 很抱歉没有让这一点更清楚,我已经修改了我的问题以尝试展示我希望实现的目标 【参考方案1】:

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

$query = Item::select();

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


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


$query = $query->get();

【讨论】:

破解了,太奇怪了,我很生气我没试过这个!非常感谢!

以上是关于Laravel 4.2 雄辩的动态查询的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 雄辩的极限查询

laravel 雄辩的关系查询

带有雄辩查询的 Laravel 分页

Laravel 4 雄辩的查询

Laravel 雄辩查询的高级 where

Laravel 5 雄辩的查询混淆