Laravel访问hasMany of hasOne

时间:2018-06-27 20:37:25

标签: php laravel web web-applications frameworks

我有房间,画廊和图像。我想将图库与房间关联,然后使用“房间”模型访问分配的图库的图像。我是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 :(得分:2)

对于雄辩的关系,您可以将它们作为属性来访问,以访问相关的模型或访问方法以进行查询或执行其他操作。

由于您需要图库模型及其相关的图像模型,因此可以访问这两个属性:

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

使用HasOne,$room->gallery基本上等于$room->gallery()->first()。使用HasMany,$gallery->images基本上等于$gallery->images()->get()

但是,在这种情况下,HasManyThrough关系会派上用场。