HasManyThrough Eloquent Relationship, Laravel 5.6, 5.7 - PullRequest
0 голосов
/ 28 декабря 2018

у меня есть три таблицы: статьи, изображения и article_images

я хочу вывести $ article-> file

это было очень просто в laravel 5.0

$ article-> article_images-> file;

Но теперь они удалили эту функцию, также я использую вывод с vuejs.

статьи

id - целое число

имя - строка

article_images

id - целое число

article_id - целое число

image_id - целое число

images

id - целое число

file - string

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Сначала вы должны добавить отношения в ваших моделях, так что в этом случае у вас есть статья, содержащая много изображений, и одно изображение принадлежит многим статьям, поэтому вы должны удалить article_images и добавить эту функцию в ваши модели (Статья и изображения)

// In Article model 
public function Images()
{
   return $this->belongsToMany('App\Image');
}


// In Images model 
public function Article()
{
   return $this->belongsToMany('App\Article');
}

После этого вы можете использовать код ниже, чтобы получить все изображения для предпочитаемой статьи, например:

$images = Article::first()->images();

0 голосов
/ 29 декабря 2018

НЕ: HasManyThrough

НО: ownToMany

Решена проблема!

Прочитайте следующий код:


    class Article extends Model
    {
        public function images()
        {
            return $this->belongsToMany('App\Image','article_images','image_id','article_id');
        }

    }

0 голосов
/ 28 декабря 2018

Вам необходимо определить связь между article и article_images

public functon images() {
   return $this->belongsTo('...\ArticleImage');
}

После этого вы можете вернуть статью с отношением

return Article::find($id)->with('images');

Пожалуйста, попробуйте это и дайте мне знать, как этоработает:)

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