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
但即使我這樣做,它感覺重複和哈克。我想知道是否有更好的方法來解決這個問題?