我有房间,画廊和图像。我想将图库与房间关联,然后使用“房间”模型访问分配的图库的图像。我是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;
答案 0 :(得分:2)
对于雄辩的关系,您可以将它们作为属性来访问,以访问相关的模型或访问方法以进行查询或执行其他操作。
由于您需要图库模型及其相关的图像模型,因此可以访问这两个属性:
$room_gallery = $room->gallery->images;
使用HasOne,$room->gallery
基本上等于$room->gallery()->first()
。使用HasMany,$gallery->images
基本上等于$gallery->images()->get()
。
但是,在这种情况下,HasManyThrough关系会派上用场。