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