Как показать только пользовательские данные в laravel

Я разрабатываю приложение Laravel с мультиаутентификацией. что-то вроде мультивендора.

Мне нужно показать данные, которые принадлежат только авторизованному пользователю. например в системе у меня есть роль пользователя Owner. Владелец имеет один или несколько домов. и в доме будет одна или несколько комнат. в комнате одна или несколько предметов мебели. поскольку у нас в системе несколько владельцев, после входа в систему владельца мне нужно показать только его дом, комнаты и мебель, которая принадлежит ему.

Имею CRUD операции с каждым домом,комнатой,мебелью,хозяином. эти операции также должны работать на основе вошедшего в систему владельца.

какой подход я должен следовать для этой проблемы. Я новичок в этом типе фильтров, и если кто-нибудь может поддержать меня в этом, было бы здорово поблагодарить вас.


person Deemantha    schedule 05.07.2020    source источник
comment
попробуйте это для входа в систему пользователя: $user = \Auth::guard('web')->user();   -  person Reza sh    schedule 05.07.2020
comment
на мой взгляд, лучше иметь каждый тип пользователей в отдельной таблице в базе данных, я имею в виду пользователей-администраторов в таблице admins, пользователя-владельца в таблице owners и т. д., и вы можете создать middleware и routeMiddleware для каждого типа из них в App\Http\Kernel.!   -  person Reza sh    schedule 05.07.2020


Ответы (1)


Ознакомьтесь с отношениями Eloquent.

Таблицы схемы базы данных (с соответствующими идентификаторами):

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
person alex    schedule 05.07.2020