Php Laravel 4-用户应仅访问多用户数据库中的数据
我希望我恰当地描述了这个主题。我正在创建一个联系人管理应用程序,其中每个用户都将在同一个联系人表中拥有自己的联系人。用户不能看到彼此的联系人 我开始这么做,但一定有更好的方法:Php Laravel 4-用户应仅访问多用户数据库中的数据,php,authentication,laravel,multi-user,database-security,Php,Authentication,Laravel,Multi User,Database Security,我希望我恰当地描述了这个主题。我正在创建一个联系人管理应用程序,其中每个用户都将在同一个联系人表中拥有自己的联系人。用户不能看到彼此的联系人 我开始这么做,但一定有更好的方法: $contact = Contact::where('user_id', Auth::user()->id)->find($id); 上面这行的问题是我想这样写: $contact = Contact::find($id) 是否有一种方法可以像加载过滤器一样加载where子句,以便所有搜索都必须匹配Aut
$contact = Contact::where('user_id', Auth::user()->id)->find($id);
上面这行的问题是我想这样写:
$contact = Contact::find($id)
是否有一种方法可以像加载过滤器一样加载where子句,以便所有搜索都必须匹配Auth::user->id?正如建议的那样,您可以使用查询范围。将此添加到您的联系人模型中:
然后像这样使用:$contacts=Contact::ofUserAuth::user->id->get 我在laracasts.com上找到了我想要的答案。视频:简化存储库 我通过创建存储库解决了这个问题。例如,在我的ContactController中:
$contact = Contact::where('user_id', Auth::user()->id)->find($id);
现在是
$contact = $this->contact->getAll();
DbRepository文件具有:
public function getAll() {
return $this->model->where('user_id', Auth::user()->id)->get();
}
还有很多,你需要查看视频来设置它。设置要做的工作要多得多,但它更干净,而且我的所有控制器都可以使用DbRepository,因为每个表都有一个用户id字段。使用第一个有效的查询有什么问题?如果您想让它更华丽,请联系::ofUserAuth::user->id;您可以看看Laravel的查询范围
public function getAll() {
return $this->model->where('user_id', Auth::user()->id)->get();
}