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