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();
}