我有一个自己的插件,用于存储酒吧,并且我希望允许酒吧所有者管理他们的网站。我不知道该怎么做。如何仅向特定后端用户显示其记录?
答案 0 :(得分:0)
假设您有一个User模型和一个Pub模型,下一步是在它们之间建立关系。一对多关系在这里非常适合,因为一个用户可以拥有一个或多个酒吧,但一个酒吧可以属于一个用户。
在用户模型中
public function pubs()
{
return $this->hasMany(Pub::class);
}
在Pub模型中
public function owner()
{
return $this->belongsTo(User::class);
}
要检索属于用户的酒吧
$pubs = Auth::user()->pubs;
或
$pubs = Pub::where('user_id', Auth::user()->id)->get();
您可以通过类似的方式,通过检查用户ID是否相同来检查请求的发布用户是否是所有者。
答案 1 :(得分:0)
您有两个选择。
您可以在user_id
表中添加owner_id
(或pubs
)列。这意味着每个酒吧都属于一个用户。您还必须添加一种定义管理员用户的方法。最简单的解决方案是将is_admin
列添加到users
表中。下一个最简单的解决方案是在role
中有一个users
列,并且其中一个角色是“ admin”(或代表“ admin”的数字)。然后,您将使用一些不错的应用程序代码来完成所有这些工作。
您可以创建一个user_pub
表作为链接表,该链接表允许users
和pubs
之间存在多对多关系。而且,您必须(在应用程序代码中)确保非管理员用户没有指向多个酒吧的链接。
选项2更灵活,但是如果您不需要那么多的灵活性(现在或将来),则选项1会更简单。