我有以下数据结构:
Table t:
(PK)id
order_id (this links to table or's id)
Table is:
(PK)id
tracking_id (this links to table or's tracking_id)
Table or:
(PK)id (this links to table t's order_id)
(FK)tracking_id
现在在我的模型(T.php)中
我设置了以下关系:
public function iS()
{
return $this->hasMany('is', 'tracking_id', 'order_id');
}
现在显然这不起作用,因为tracking_id与order_id不匹配。
如何将这三个表链接在一起,以便检索与is
表对应的t
数据?
我在控制器中调用它:
$o = O::with('t', 't.iS')->where('id','=',$id)->first(); (O is my model for "o" table)
答案 0 :(得分:1)
您正在寻找hasManyThrough关系。 http://laravel.com/docs/eloquent#has-many-through
在文档示例中:Country
有Users
,Users
有Posts
。
要获取您定义的每个国家/地区的帖子:
class Country extends Eloquent {
public function posts()
{
return $this->hasManyThrough('Post', 'User', 'country_id', 'user_id');
}
}
在您的示例中:T
有Or
而Or
有Is