雄辩的构建,从数组中查询

时间:2019-04-20 21:27:43

标签: php laravel orm eloquent

因此,我正在尝试根据关联数组中的数据准备一个雄辩的查询:

/* This works */
$this
    ->where("email", "me@gmail.com")
    ->where("is_active", 1)
    ->update($params);

/* This doesn't work */
$where = [
    'email' => "me@gmail.com",
    'is_active' => 1
];
foreach ($where as $k => $v) {
    $this->where("{$k}", "{$v}");
}
$this->update($params);

我想念什么吗? 任何帮助表示赞赏。

编辑:查询不会更新数据库中的实体。

Ubuntu 18.10(宇宙墨鱼):4.18.0-17-通用x86_64位:64桌面:Gnome 3.30.2 拉拉多克(Laravel)5.8。

2 个答案:

答案 0 :(得分:2)

它不起作用,因为每个$this->where()都会实例化一个新的查询生成器,但是从不执行它。

这有效:

$where = [
    'email' => "me@gmail.com",
    'is_active' => 1
];

$query = $this->newQuery();

foreach ($where as $k => $v) {
    $query->where("{$k}", "{$v}");
}

$query->update($params);

您还可以将where()与数组一起使用:

$this->where($where)->update($params);

答案 1 :(得分:1)

我不清楚您为什么需要这个。但是没有循环的理由,您只需将数组添加到where方法。

$this->where([
    'email' => "me@gmail.com",
    'is_active' => 1
])->update();