Laravel 通过与用户建立模型关系,用户只能访问自己的数据

Laravel 通过与用户建立模型关系,用户只能访问自己的数据,laravel,octobercms,octobercms-plugins,octobercms-backend,Laravel,Octobercms,Octobercms Plugins,Octobercms Backend,我有两个主模型和一些带有relationController到主模型的子模型,现在我需要向主模型和子模型添加用户id,这样用户只能访问自己的数据,因为用户数据保持在同一个表中。 我使用透视表创建了从user.php到模型的belongToMany关系,反之亦然,但什么都没有发生 我不知道该怎么做,因为我需要简化数据库管理,以防需要迁移。。 有人可以分享你在这方面的经验吗?我可以建议你只需将用户id[对于后端=>后端用户id]添加到你只想访问所有者数据的模型中 现在在main model中可以定义

我有两个主模型和一些带有relationController到主模型的子模型,现在我需要向主模型和子模型添加用户id,这样用户只能访问自己的数据,因为用户数据保持在同一个表中。 我使用透视表创建了从
user.php
到模型的
belongToMany
关系,反之亦然,但什么都没有发生 我不知道该怎么做,因为我需要简化数据库管理,以防需要迁移。。
有人可以分享你在这方面的经验吗?

我可以建议你只需将
用户id
[对于后端=>后端用户id]添加到你只想访问所有者数据的模型中

现在在
main model
中可以定义
belongsTo
关系,在user中可以定义
hasmall
关系

主模型关系[如果要在后端限制用户,则需要在后端用户模型中添加后端用户关系和相同的关系

添加与用户模型的关系[您需要将此代码放入插件的启动方法中]

现在访问数据[前端侧

示例:基于登录的管理员用户[OctoberCMS]在listview中筛选数据。如果不提供现成的功能,则不能隐藏部分数据记录。您可以根据权限和角色隐藏整个菜单或所有记录,但不能隐藏部分记录

要添加
后端用户\u id
,您可以使用此代码


如果有任何疑问,请发表评论。

添加您的模型和所需输出如果您在后端使用它,那么您需要使用后端用户表,并且它已经在您可以使用它的地方可用。
backend\models\User
,更新的答案请检查它。这只是为了查看
模型的转储,您不需要将它放在任何地方,它用于调试目的显示您需要实现它的所有数据,因为10月份没有该功能,以及当模型保存在db中时,您需要手动将用户连接到模型。我恐怕您认为所有数据都将在10月份生成,但我们不需要手动添加过滤器和数据。虽然您可以使用默认功能向后端部分添加限制,但不能对数据进行限制。。使用默认值。建议的方法是将BE用户数据添加到记录中,而不是筛选数据。意味着在控制器中,您需要手动添加过滤器-更新的答案以过滤数据,但其将仅在列表视图中过滤。您需要手动添加此答案无法覆盖所有筛选条件的所有内容,因此添加了示例
class MainModel extends Model
{
    // Adding relation to user model
    public $belongsTo = [
        'user' => 'RainLab\User\Models\User',
        'backend_users' =>'Backend\Models\User' // for Backend
    ];

}
// Extending User Model
\RainLab\User\Models\User::extend(function($model) {
    $model->hasMany['mainmodel'] = ['HardikSatasiya\Plugin\Models\MainModel'];
});

// for Backend users
\Backend\Models\User::extend(function($model) {
    $model->hasMany['mainmodel'] = ['HardikSatasiya\Plugin\Models\MainModel'];
});
// Returns the signed in user
$user = \Auth::getUser();
dd($user->mainmodel); // it will return collection of related mainmodels

// it will return related data and now its filter by owner
dd($user->mainmodel[0]->otherRelatin); 


// for Backend users
// Returns the signed in user
$user = \BackendAuth::getUser();
dd($user->mainmodel); // it will return collection of related mainmodels

// it will return related data and now its filter by owner
dd($user->mainmodel[0]->otherRelatin); 
public function listExtendQuery($query)
{
    $user = \BackendAuth::getUser();
    $query->where('backend_users_id', $user->id);
}
class MainModel extends Model {

    public function beforeSave()
    {
        $user = \BackendAuth::getUser();
        $this->backend_users_id = $user->id;
    }
}