【问题标题】:Laravel 4.2 Eloquent Dynamic QueryLaravel 4.2 雄辩的动态查询
【发布时间】: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 很抱歉没有让这一点更清楚,我已经修改了我的问题以尝试展示我希望实现的目标

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


【解决方案1】:

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

$query = Item::select();

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

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

$query = $query->get();

【讨论】:

  • 破解了,太奇怪了,我很生气我没试过这个!非常感谢!
猜你喜欢
  • 2020-01-14
  • 2018-01-26
  • 2021-07-23
  • 1970-01-01
  • 2017-11-11
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多