PHP/Laravel -将新模型分配给已获取的模型


PHP/Laravel - Assign new model to a fetched one

假设我呼叫我的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是一个关系,而不是一个可以赋值的简单值。我建议阅读有关关系、即时加载和插入相关模型的文档。

最后一个,特别是,是你想要做的。根据关系的类型,您需要使用saveassociateattach方法来更新关系,而不是将值赋给$user->permissions