PHP/Laravel-将新模型分配给获取的模型
假设我打电话给我的用户并返回以下信息:PHP/Laravel-将新模型分配给获取的模型,php,laravel,Php,Laravel,假设我打电话给我的用户并返回以下信息: $user = User::with('permissions')->find(1); 我希望得到一个$user->permissions作为用户权限的用户 接下来,我通过以下方式为该用户创建并分配一些新权限: // Say Input::all() contains an array of new permissions I want to add // I am using Underscore PHP here $newPermissions
$user = User::with('permissions')->find(1);
我希望得到一个$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='任何东西、文本、字符串或对象都不起作用!'什么也没有发生。看起来权限是一种关系,而不是一个可以赋值的简单值。我建议您阅读关于和的文档
特别是最后一个,就是你要做的。您不需要为$user->permissions分配值,而是需要根据关系的类型,使用save、associate或attach方法更新关系。这很有说服力-它不允许您以这种方式设置关系。使用此$user->setRelation'permissions',$newPermissions