【发布时间】:2018-02-06 17:24:53
【问题描述】:
表users 和roles 通过role_user 作为数据透视表存在多对多关系。
下面的代码语句通过 id 找到一个用户并成功更新第一个角色。
User::findOrFail(1)->roles[0]->update(['name'=>'Admin']);
使用下面的代码,我打算更新与提供的 user_id 关联的所有用户角色
User::findOrFail(1)->roles()->update(['name'=>'Admin']);
但我收到以下错误
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'updated_at' in field list is ambiguous (SQL: update `roles` inner join `role_user` on `roles`.`id` = `role_user`.`role_id` set `name` = Admin, `updated_at` = 2018-02-06 09:06:30 where `role_user`.`user_id` = 1)
我知道User::findOrFail(1)->roles 是一个集合。
但是User::findOrFail(1)->roles() 的返回值是BelongsToMany 类型的
这是一个对象吗?为什么我们不能在上面使用update() 方法?
【问题讨论】:
-
所以您希望单个用户在多行中具有相同的角色??
-
@Sohel0415 我的错,我为什么要那个,现在明白了,谢谢 :)