我有3个型号:
关系很明显,父亲可以有很多儿子,他的儿子可以有很多孙子。
我想要达到的目的是找出父亲有多少孙子 。
我知道要知道他有多少儿子我必须使用它:
Father::find(1)->sons->count();
但我怎么能知道他有多少孙子?
答案 0 :(得分:1)
如果您不想遍历Sons,可以在父模型上定义hasManyThrough
关系,如下所示:
class Father
{
public function grandsons()
{
return $this->hasManyThrough('GrandSon', 'Son');
}
}
点击此处查看:http://laravel.com/docs/5.1/eloquent-relationships#has-many-through
答案 1 :(得分:1)
除了@ jsphpl的答案,您还可以继续链接,但使用方法而不是属性调用。
Father::find(1)->sons()->grandsons()->grandgrandsons()->count();
这是因为sons()
返回了一个关系,而不是一个集合,因此grandsons()
将继续从该sons()
查询构建查询。这同样适用于grandgrandsons()
。