我正在努力学习Laravel,但我并不完全明白如何以最佳方式完成任务。
情景中,
用户(user_id 5)可以创建todo列表,id为3(todo_id 3)。他们每个人都生活在自己的模型中,因此用户模型和todo模型。我目前正在检查是否通过将其传递给方法来创建待办事项,
public function show($id)
{
TodoList::where('id',$id)->where('user_id', auth::id())->firstOrFail();
return 'ok';
}
所以,我认为可以使用中间件过滤所有这些。我有更多需要相同操作的模型,因此用户2无法更改/编辑用户5等的todo_list。这需要附加到所有方法,以阻止其访问。显示,查看,删除等。
有没有办法做到这一点,所以我不必为每个模型创建一个新的中间件?
答案 0 :(得分:0)
Laravel Eloquent为您提供Query Scopes
,这可能是您正在寻找的。 p>
你的模特:
class TodoList extends Model {
public function scopeFiltered($query, $id, $user_id)
{
return $query->where('id',$id)->where('user_id', $user_id);
}
}
通话:
TodoList::filtered($id, Auth::user()->id)
->get();