Проблема при получении записей из базы данных с таблицей отношений - PullRequest
2 голосов
/ 29 января 2020

У меня проблемы с привязкой фотографий к тегам с использованием промежуточной таблицы.

Как в примере ниже выбрать все фотографии, которые относятся к тегу 1, методом Eloquent в Laravel?

У меня есть эти таблицы:

-Photos Table

 |  id  |    name    | description |
    1     photo1.png      ....
    2     photo2.png      ....
    3     photo3.png      ....
-Tags Table

 |  id  |    name    |
    1      Aesthetic
    2        Dark
-Tags Relations

 | id | tag_id | photo_id |
   1      1         3
   2      1         2
   3      2         1

1 Ответ

1 голос
/ 29 января 2020

Прежде всего, вам необходимо убедиться, что для таблиц «Фото» и «Теги» определено отношение.

В модели «Фото» у вас должна быть следующая функция:

public function tags() {
    return $this->belongsToMany(
        Tag::class,
        "photos_tags", // the name of the pivot table
        "photo_id",
        "tag_id"
    );
}

Под тегами модель у вас должна быть следующая функция:

public function photos() {
    return $this->belongsToMany(
        Photo::class,
        "tags_photos", // the name of the pivot table
        "tag_id",
        "photo_id"
    );
}

Теперь, чтобы получить доступ ко всем тегам, которые относятся к фотографии с идентификатором 1, вы можете вызвать следующее:

Photo::findOrFail(1)->tags()->get();

И То же самое вы можете сделать для указанного тега c, чтобы получить все его фотографии.

Tag::findOrFail(1)->photos()->get();

Надеюсь, это приведет вас к тому, что вы sh.

...