Laravel 修改数据与原数据一样 导致没有执行sql
代码
$openid = "123"; // 微信openid
User::WhereIn("id",['1','2','3'])->update([
'openid' => $openid
]);
$user = User::find(1);
// 取消所有这个openid的绑定者
User::Where(['openid' => $openid])->update([
'openid' => null
]);
// 给1号用户绑定openid
$user->openid = $openid;
$user->save();
问题: openid = 123
有几个?
答案: 一个都没有。
原因
getDirty
会返回 $user
的 original
(查询出来的 不允许改变) 和 attributes
(手动赋值的) 不同的地方,
最后发现属性都一样,所以 $user->save()
不会执行修改。
扯淡
写 微信绑定
的时候发现不对劲,还以为是 laravel
或者 mysql
的 bug
当然
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: