因此,我正在尝试根据关联数组中的数据准备一个雄辩的查询:
/* 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。
答案 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();