我认为这将是hasMany和belongsTo的简单用法,但我没有获取其中一个表的数据,即title。
我有两张桌子:
scenes ( movie scenes basically)
------
int scene_id (can't change to "id".. this is at my company)
string scene_name
int title_id
titles (movie dvd titles)
------
int title_id ( same here.. should be id, but it's not )
string title_name
string title_description
“场景”表中有多个场景,具有相同的title_id,正如您可能猜到的那样。
到目前为止,我有:
class Title extends Eloquent {
protected $table = 'titles';
protected $primaryKey = "title_id";
public function scenes() {
return $this->hasMany('Scene','title_id','title_id');
}
}
class Scene extends Eloquent {
protected $table = 'scenes';
protected $primaryKey = "scene_id";
public function title() {
return $this->belongsTo('Title', 'title_id', 'title_id');
}
}
我看起来很奇怪,我必须为title()和scenes()成员函数指定title_id ..但是该字段是将每个标题与其多个场景连接起来的。
我为获得一个场景而进行的调用(假设$ scene_id是一个int)以及每个场景的标题信息是:
$scene_info = Scene::find($scene_id)->title();
如果我在$ scene_info上执行var_dump,我会得到一个很多的Laravel代码,我猜我不应该这样。
我也收到了场景信息,但标题信息是空白的。
只是想知道我的Laravel编码是否有任何关闭
史蒂夫
答案 0 :(得分:1)
尝试以下方法:
$scene_info = Scene::with('title')->find($scene_id);
或者你可以在获得场景后懒惰加载关系:
$scene_info = Scene::find($scene_id);
$scene_info->load('title');
答案 1 :(得分:0)
终于找到了获取标题信息所需的内容:
所以它是:
$info = Scene::with('title')->find($scene_id); (thanks to Anam)
// to get scene info
$scene_array = $info->getAttributes();
// to get title info
$title_array = $info->getRelations();
你认为,如果你已经在第一次调用时指定了“('title')”,那么调用getRelations()对于获取标题信息是不必要的。
无论如何,再次感谢你们的帮助。