PHP / Laravel - 为获取的模型分配新模型

时间:2014-07-09 19:28:57

标签: php laravel

假设我打电话给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!'没有任何反应)。

1 个答案:

答案 0 :(得分:0)

看起来permissions是一种关系,而不是可以为其赋值的简单值。我建议您阅读relationshipseager loadinginserting related models上的文档。

特别是最后一个是你要做的事情。您需要使用$user->permissionssaveassociate方法更新关系,而不是为attach分配值,具体取决于关系类型。