在laravel 8和element中,当我在update()之前使用where()时,初始化条件终止!
例如,
$post = Post::find($id);
$post->update(['status' => 'published']);
这个更新查询是:
update `posts` set `status` = 'published' where `id`='1'
但是当我使用where()时:
$post = Post::find($id);
$post->where('status', '=', 'unpublished')->update(['status' => 'published']);
update query is:
update `posts` set `status` = 'published' where `status`='unpublished'
但是我希望它像下面这样
update `posts` set `status` = 'published' where `status`='unpublished' and `id`='1'
为什么是这样的查询?我的期望错了吗?还是臭虫?
这是因为您在Collection
上使用where
而不是构建新的查询。
如果你想用一个属性的特定值更新当前的$post
,你需要使用if
代替。
$post = Post::find($id);
if ($post->status == 'unpublished')
$post->update(['status' => 'published']);