【问题标题】:Update user group OctoberCMS rainlab user plugin更新用户组 OctoberCMS rainlab 用户插件
【发布时间】:2017-04-05 11:28:17
【问题描述】:

如何更新更改用户组?根本找不到。花了几个小时。

$user = new User;
$user->group = 'new';
$user->save();

User 与 belongsToMany 和 Group 相关。

不工作。 谢谢。

【问题讨论】:

    标签: php laravel plugins octobercms usergroups


    【解决方案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 )。我确信有简单的方法。最“十月”的方式
    猜你喜欢
    • 2018-12-10
    • 2019-08-24
    • 2018-10-18
    • 2019-07-02
    • 2017-07-30
    • 2019-04-01
    • 2017-07-31
    • 2018-07-31
    • 2019-04-20
    相关资源
    最近更新 更多