@AlpineMilk

Как сделать ограничение просмотра записей для (не друзей)?

Добрый день!
В общем нужно реализовать такую идею: есть пользователь у которого есть своя лента с записями и просматривать эту стену может только пользователь который состоит у него в друзьях (как в вк или фейсбуке). Как организовать доступ на это?
в бд есть смежная таблица такого вида:
5a4ba3ea40c67614562016.png

думал с помощью policy(laravel) но как записать условие которое проверит, что в базе friend_one_id есть друг friend_two_id ??
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Batlab
PHP Senior | Python Middle | JS Junior
Создай middleware, в котором проверяй права.
Ответ написан
dark_tke
@dark_tke
Помогли? Отметь решением!
а что за тема у тебя в phpstorm-e?


Стандартная темная darkula.

большое спасибо! все работает! а не подскажите где прочитать про разницу friends() и friends не могу найти именно про эту разницу ничего

Касательно разницы в friends() и friends, в данном конкретном случае разницы никакой толком нет, так как нет аргументов у функции friends, можно записать и так и так(т.е опустить скобки), но мне все же привычнее при обращении указывать именно со скобками, так не путаешься, где у нас метод, а где переменная. Плюс писать методы без скобок, это честно говоря bad practice. Такой вариант записи возможен, но имеет много нюансов в применении

Но допустим если несколько модифицировать код который у нас написан, можно сделать вот такую запись:
// Пример с доп параметром
  public function friends($user_id = null)  //Добавляем опциональный аргумент
  {
  // записываем сперва в переменную
    $result = $this->belongsToMany(
      'App/User',
      'friends', 
      'friend_one_id ', 
      'friend_two_id ',
      )->withTimestamps(); 
  // проверяем на наличие опционального аргумента и выводим
   return ($user_id <> null ) ? $result->where('friend_two_id', $user_id): $result;
  }


И в таком случае можно записать наш пример как
$data = \Auth::user()->friends(1)
Написано 26 минут назад
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы