1
我在数据库中简化了以下关系。什么是检查用户是否有权访问实体的最佳方法
1 User -> n Projects
1 Project -> n Tasks
etc.
所以,现在我经常发现自己在在代码执行以下操作
// Get the current logged in User
$user = Session::getUser();
$project = $this->projects->findById($project_id);
if (! $project->hasOwner($user))
// user does not own the project
而这就是与该项目有关系变得更糟。例如,那么我必须检查用户是否拥有这些项目,然后检查这些任务是否属于该项目。
我在想也许使用Eager Loading在这里,所以我可以只对给定的结果进行过滤。但是,然后数据库必须加载更多的数据,然后通常是必需的。对 ?
// Get the current logged in User
$user = Session::getUser();
$project = $user->projects()->find($project_id);
if (! $project)
// user does not own the project
但即使我这样做,它感觉重复和哈克。我想知道是否有更好的方法来解决这个问题?