更新用户组 OctoberCMS rainlab 用户插件
Posted
技术标签:
【中文标题】更新用户组 OctoberCMS rainlab 用户插件【英文标题】:Update user group OctoberCMS rainlab user plugin 【发布时间】:2017-04-05 11:28:17 【问题描述】:如何更新更改用户组?根本找不到。花了几个小时。
$user = new User;
$user->group = 'new';
$user->save();
User 与 belongsToMany 和 Group 相关。
不工作。 谢谢。
【问题讨论】:
【参考方案1】:我认为您可以扩展 User 模型以添加这样的 addUserGroup
方法;
public function boot()
User::extend(function($model)
$model->addDynamicMethod('addUserGroup', function($group) use ($model)
if ($group instanceof Collection)
return $model->groups()->saveMany($group);
if (is_string($group))
$group = UserGroup::whereCode($group)->first();
return $model->groups()->save($group);
if ($group instanceof UserGroup)
return $model->groups()->save($group);
);
);
因此您可以将组添加到用户;组模型实例、模型集合和模型代码字符串。
【讨论】:
嗨,我用字符串参数测试了你的代码,它工作正常。 @Surahman 这只是一个小改动。您的代码 sn-p 很有帮助:)【参考方案2】:我研究了 10 月的rainlab 用户类。
用户类通过belongstoMany关系与组类链接。
public $belongsToMany = [
'groups' => ['RainLab\User\Models\UserGroup', 'table' => 'users_groups'],
'address' => [
'\codework\users\models\Address',
'table'=>'codework_users_user_address',
'order'=>'addr'
]
];
因此,当您将用户添加到任何组时,请确保您已将该组创建到您的数据库中。
表名 user_groups :这将包含可以分配用户的所有组。
表名users_groups:这是一个包含用户和组表之间关系的数据透视表。
希望这会有所帮助:)
【讨论】:
我确实知道数据透视表。但我没有找到像 $user-addUsergroup('groupname'); 这样的函数或属性。我知道我可以直截了当 - update(table .. bla bla )。我确信有简单的方法。最“十月”的方式以上是关于更新用户组 OctoberCMS rainlab 用户插件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 octobercms 中过滤具有多个类别的博客文章?