【问题标题】:October CMS - Display only those records that are attached to the groups of the current user十月 CMS - 仅显示附加到当前用户组的那些记录
【发布时间】:2018-06-01 23:09:19
【问题描述】:

我只需要显示模型中附加到某些组的那些记录。 (“belongsToMany”关系)。 (Movies模型插件列表后端页面) 我想获取当前用户的组并创建一个查询。

我的意思:

我使用关系字段将记录附加到组。

即:

  • 我有表“elisseii_myplugin_movies”。
  • 在“电影”模型中,我创建了一个名为“组”的关系字段。
  • 并创建了表“elisseii_myplugin_movies_groups”。
  • 在“电影”模型中使用了 $belongsToMany。

    public $belongsToMany =[ 
    
        'groups' =>[ 
            'Elisseiidev\MyPlugin\Models\Groups', 
            'table' => 'elisseii_myplugin_movies_groups', 
            'order' => 'name'
        ]
    
    ];
    
  • 插件中的“Groups”模型使用标准表“backend_user_groups”。

现在记录有关于附加到它们的组的信息。 你可以看到video tutorial,上面说了)

我需要用户不能编辑不属于他们的组的记录。 代码必须是动态的。

我需要一个详细的答案,因为我正在学习)) 提前感谢您的宝贵时间。

【问题讨论】:

    标签: octobercms octobercms-plugins octobercms-backend


    【解决方案1】:

    您需要将此方法添加到使用列表行为的控制器中,以显示列表。

    public function listExtendQuery($query) {
        $user = \BackendAuth::getUser();
        $codes = $user->groups->pluck('code')->toArray();
        $query->whereHas('groups', function ($q) use ($codes){
            $q->whereIn('groups.code', $codes);
        });
    }
    

    这个listExtendQuery 方法将使用我们为用户显示的列表的自定义条件扩展查询。

    这里我们获取 Be user 然后我们提取 code 因为它将是数组,用户可以有多个组。

    现在您的Movies 表具有groups 关系,因此它可以有多个组,所以现在我们可以检查该电影组代码是否在用户中可用,然后我们可以向他显示列表项。

    感染你不需要创建新模型(Elisseiidev\MyPlugin\Models\Groups)如果你不需要额外的功能可以直接使用内置模型。

    你可以简单地做喜欢

    public $belongsToMany = [
        'groups' => [
             Backend\Models\UserGroup::class, 
            'table' => 'elisseii_myplugin_movies_groups',
            'order' => 'name'
        ]
    ];
    

    让我知道它是否有效。

    【讨论】:

    • 它对我不起作用。我将此代码添加到模型控制器中。但我遇到了一个错误。也许我错过了什么或不明白?这是错误的屏幕截图。 yadi.sk/i/jjhi6gEE3QpSP2
    • 理想情况下我需要这样的逻辑:如果用户角色 = “经理”,那么我们开始过滤记录的显示(“电影”)。过滤应该基于用户组。如果记录(“电影”)中与当前用户的组有关系,则我们显示此记录。可以显示一些条目。但前提是它们对应于当前用户的组。
    • 我找到了解决办法:)
    • 哦!很高兴听到这个消息
    猜你喜欢
    • 2018-06-01
    • 2019-03-28
    • 2017-07-18
    • 2020-12-18
    • 2023-01-17
    • 2019-01-26
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多