我可以建议您将 user_id [for Backend => backend_users_id ] 添加到您希望仅访问所有者的数据的模型中。
现在在main model 中您可以定义belongsTo 关系,在用户中您可以定义hasMany 关系
主模型关系[如果要在后端限制用户,则需要在后端用户模型中添加后端用户关系]
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);
基于登录的管理员用户在列表视图中过滤数据示例 [OctoberCMS 不提供开箱即用的此类功能,您不能隐藏部分数据记录,您可以隐藏整个菜单或基于权限的所有记录和角色但不能隐藏部分记录 ]
public function listExtendQuery($query)
{
$user = \BackendAuth::getUser();
$query->where('backend_users_id', $user->id);
}
要添加backend_users_id,您可以使用此代码
class MainModel extends Model {
public function beforeSave()
{
$user = \BackendAuth::getUser();
$this->backend_users_id = $user->id;
}
}
如有任何疑问,请发表评论。