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 雄辩的动态查询的主要内容,如果未能解决你的问题,请参考以下文章