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

В моей базе данных есть три таблицы, например:

пользователи

+----+---------------+-----------+
| id | name          | role      |
+----+---------------+-----------+
|  3 | Pavel Chekov  | student   |
|  5 | Nyota Uhura   | student   |
|  6 | Leonard McCoy | professor |
+----+---------------+-----------+

предметы

+----+--------------------------+
| id | name                     |
+----+--------------------------+
|  1 | Relational Databases     |
|  3 | Accessibility            |
|  4 | Software Engineering     |
|  5 | Marketing and Business   |
+----+--------------------------+

P.S .: У каждого предмета есть описание в таблице, не показанное здесь.

users_subjects

+----+---------+------------+
| id | user_id | subject_id |
+----+---------+------------+
|  1 |       6 |          1 |
|  2 |       6 |          3 |
|  3 |       3 |          1 |
|  4 |       3 |          3 |
|  5 |       3 |          5 |
+----+---------+------------+

Затем я должен отобразить в моем шаблоне темы, связанные с пользователем, который в данный момент вошел в систему (студент или профессор), например:

<section class = "section">

    <div class = "tile is-ancestor">

      @foreach ($subjects as $subject)

      <div class = "tile is-parent">
        <article class = "tile is-child box">
          <p class = "title">{{ $subject->name }}</p>
          <div class = "content">
            <p>{{ $subject->description }}</p>
          </div>
        </article>
      </div>

      @endforeach          

    </div>

</section>

Для каждой темы, с которой связан пользователь, будет создана новая плитка, заполняющая раздел. Я хочу отображать только темы, относящиеся к текущему пользователю.

Как я могу этого добиться? Заранее благодарю за любую помощь.

ты говоришь красноречиво?

afsal c 25.04.2018 21:51

@afsal да, впервые пользуюсь.

Julio Kirk 25.04.2018 22:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы правильно определите свои отношения в своей модели:

/**
 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
 */
public function subjects(){
    return $this->belongsToMany(User::class);
}

Вы должны иметь возможность просто получать темы пользователей.

  @foreach ($user->subjects as $subject)

  <div class = "tile is-parent">
    <article class = "tile is-child box">
      <p class = "title">{{ $subject->name }}</p>
      <div class = "content">
        <p>{{ $subject->description }}</p>
      </div>
    </article>
  </div>

  @endforeach  

Ссылка: https://laravel.com/docs/5.6/eloquent-relationships#many-to-many

Спасибо. Я впервые использую Eloquent, и этот раздел было немного сложнее для понимания, но теперь он понятнее :)

Julio Kirk 25.04.2018 22:01

Без проблем. Хороший выбор для начала с Laravel!

Mkk 25.04.2018 22:10

Благодарность! Также извините за беспокойство, но, читая документацию и пытаясь реализовать, я получаю сообщение об ошибке «Попытка получить свойство не-объекта», когда пытаюсь определить $ user. Вы знаете, что могло вызвать это?

Julio Kirk 25.04.2018 23:04

Другие вопросы по теме