【问题标题】:How to show only user specific data in laravel如何在 laravel 中仅显示用户特定的数据
【发布时间】:2020-10-25 16:07:50
【问题描述】:

我正在开发一个具有多重身份验证的 Laravel 应用程序。类似于多供应商的东西。

我需要显示仅属于登录用户的数据。例如在系统中,我有一个用户角色“所有者”。业主拥有一栋或多栋房屋。房子将有一个或多个房间。一个房间有一件或多件家具。由于系统中有多个业主,一旦业主登录系统,我只需要显示他的房子、房间和属于他的家具。

我对每个房子、房间、家具、业主都有 CRUD 操作。根据登录的所有者,这些操作也应该可以使用。

我应该采用什么方法来解决这个问题。我是这种过滤器的新手,如果有人能在这方面支持我,那将非常感谢。

【问题讨论】:

  • 试试这个来获取登录用户:$user = \Auth::guard('web')->user();
  • 在我看来最好将每种类型的用户放在数据库中的单独表中,我的意思是admins表中的管理员用户,owners表中的所有者用户等等,你可以创建@ 987654324@ 和 routeMiddleware 对于App\Http\Kernel 中的每种类型。!
  • spatie/laravel-permission 吗?

标签: laravel eloquent laravel-permission


【解决方案1】:

查看Eloquent Relationships

数据库架构表(具有各自的 id):

users
roles
role_user
houses
house_user
rooms
house_room

定义模型关系(以 users.php 模型为例)

public function role()
{
  return $this->belongsTo('App\Role');
}

public function houses()
{
  return $this->belongsToMany('App\House');
}

house.php 模型

public function users()
{
  return $this->belongsToMany('App\User');
}

等等……

控制器:

function view_current_users_houses() {
  // Get all houses with current logged in user
  // find(auth()->user()->id);
  $user = User::find(auth()->user()->id);

  return view('view', compact('user'));
}

查看刀片:

@foreach($user->houses as $houses)
  {{$house->name}}
@endforeach

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多