Laravel получит доступ к hasMany of hasOne - PullRequest
0 голосов
/ 27 июня 2018

У меня есть комната, галерея и изображения. Я хочу связать галерею с комнатой, а затем я хочу получить доступ к изображениям назначенной галереи, используя модель комнаты. Я новичок в Laravel, я просмотрел уроки YouTube и документацию, но не нашел решения для моей проблемы.

Room.php:

class Room extends Model
{
    protected $table = 'rooms';

    public function gallery()
    {
        return $this->hasOne('App\Gallery');
    }
}

Gallery.php:

class Gallery extends Model
{
    protected $table = 'gallery';

    public function images()
    {
        return $this->hasMany('App\Image');
    }

    public function room()
    {
        return this->belongsTo('App\Room');
    }
}

RoomController.php:

$room = Room::findOrFail($id);
$room_gallery = $room->gallery()->images;
return $room_gallery;

1 Ответ

0 голосов
/ 27 июня 2018

С помощью отношений Eloquent вы получаете доступ к ним как к свойствам, чтобы получить доступ к связанным моделям, или к методу для запроса или выполнения дополнительных манипуляций.

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

$room_gallery = $room->gallery->images;

С HasOne $room->gallery по существу равно $room->gallery()->first(). С HasMany $gallery->images будет по существу равно $gallery->images()->get().

Однако, это может быть случай, когда пригодятся отношения HasManyThrough .

...