假设我呼叫我的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!'
也没有发生)。
看起来permissions
是一个关系,而不是一个可以赋值的简单值。我建议阅读有关关系、即时加载和插入相关模型的文档。
最后一个,特别是,是你想要做的。根据关系的类型,您需要使用save
、associate
或attach
方法来更新关系,而不是将值赋给$user->permissions
。