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

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

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

+----+---------------+-----------+
| 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   |
+----+--------------------------+

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

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>

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

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

1 Ответ

0 голосов
/ 25 апреля 2018

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

/**
 * @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

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