更新用户组 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 中的用户列表导出为 CSV

Octobercms:如何翻译Flash消息?

如何在 octobercms 中过滤具有多个类别的博客文章?

Octobercms onSave 更新其他模型

OctoberCMS 如何使用插件扩展中的字段创建自定义用户注册表单

OctoberCMS 或纯 Laravel [关闭]