如何从Eloquent的第三个关系表中获取所有相关的行?

问题描述:

我有三个表格,experiences,imagesexperience_images如何从Eloquent的第三个关系表中获取所有相关的行?

experience_images我有两列,experience_idimage_id。此表可以为一个经验,像这样持有大量图像:

"experience_id","image_id" 
"6","31" 
"6","32" 
"6","33" 
"6","34" 

现在我该怎样运行Experience::find(6)->images得到Image集合从我Experience模式?

你必须建立的关系,你的口才模型

class Experience extends Eloquent { 
    public function images(){ 
     return $this->belongsToMany('Image', 'experience_images', 'experience_id', 'image_id'); 
    } 
} 

In the Official Docs

+0

@Marwelln这些隐式外键真的有必要吗?通常情况下,您可以将它们留下,并按照惯例使用小写模型名称+'_id' – lukasgeiter 2014-10-29 09:07:06

+0

在我的情况下,这是因为我的模型都被命名为'Model',但我猜它可能已被跳过,因为示例中的模型被命名'体验'和'图像'。如果你愿意,你可以恢复我的编辑。 – Marwelln 2014-10-29 09:24:12

+0

嗯好的,我认为你有传统的型号名称 – lukasgeiter 2014-10-29 09:25:54

你必须在paremeter发现添加ID()。在这种情况下是6:

$exp = Experience::find(6); 

foreach($exp->images as $e){ 

     return $e->somedata; 

}