3
我有兩張名爲'works'和'slides'的表以及兩個擴展名爲'Work'和'Slide'的Eloquent的類。 我的'作品'表中有一個'id'列,'標題'列,'描述'列和'圖像'列,並在我的'幻燈片'表中我有一個複合鍵使用外鍵與兩個名爲'id'和'work_id'的列。Laravel Eloquent hasOne returns empty
這是我的數據庫中的關係的樣子:
這是我的Slide類代碼:
class Slide extends Eloquent {
public $timestamps = false;
public function workId() {
return $this->hasOne('work', 'work_id', 'id');
}
}
這是對我的工作類的代碼:
class Work extends Eloquent {
public $timestamps = false;
}
我的索引頁面內我試圖通過調用我的Slide對象中的'workId()'方法來獲得一個工作對象,但它返回空這個代碼:
$slides = Slide::all();
$works = new \Illuminate\Database\Eloquent\Collection;
foreach ($slides as $slide) {
$works->push($slide->workId());
}
printf($works);
但是,如果我替換爲「$ slide-> workId()調用:
Work::find($slide->work_id)
然後發現沒有問題的行。
我該怎麼做才能讓函數返回Work對象而不是調用Work :: find()?
我懂了。對不起,我對數據庫關係不太好,但現在我明白了。感謝您的解釋。 – 2014-10-03 23:11:18
@LiamPotter此外,我會建議使用急切加載的循環。你可以在我鏈接的URL中找到詳細信息。 – TonyArra 2014-10-03 23:20:06
像這樣? http://pastebin.com/D8stebG1 – 2014-10-03 23:39:33