Laravel 5 3种型号之间雄辩的关系

时间:2015-11-05 19:12:59

标签: php laravel laravel-4 laravel-5 eloquent

我有3个型号:

  1. 孙子
  2. 关系很明显,父亲可以有很多儿子,他的儿子可以有很多孙子。

    我想要达到的目的是找出父亲有多少孙子

    我知道要知道他有多少儿子我必须使用它:

    Father::find(1)->sons->count();
    

    但我怎么能知道他有多少孙子?

2 个答案:

答案 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()