假设我打电话给User
并返回以下内容:
$user = User::with('permissions')->find(1);
我希望得到一个user
,$user->permissions
是用户的权限。
接下来,我通过以下方式为此用户创建并分配一些新权限:
// Say Input::all() contains an array of new permissions I want to add
// I am using Underscore PHP here
$newPermissions = Arrays::each(Input::all(), function($permission) {
$new = new Permission($permission);
$user->associate($new);
return $new;
});
现在我想更新$user
并将其返回:
// This does NOT work (it returns the original $user->permissions)
return $user->permissions = $newPermissions;
// But this DOES work
unset($user->permissions);
return $user->permissions = $newPermissions;
这是PHP的东西还是Laravel的东西?我该怎么办? (顺便说一句,即使我说$user->permissions ='anything, text, string, or object doesnt work!'
没有任何反应)。
答案 0 :(得分:0)
看起来permissions
是一种关系,而不是可以为其赋值的简单值。我建议您阅读relationships,eager loading和inserting related models上的文档。
特别是最后一个是你要做的事情。您需要使用$user->permissions
,save
或associate
方法更新关系,而不是为attach
分配值,具体取决于关系类型。