Php Laravel获取具有条件的所有子节点计数

Php Laravel获取具有条件的所有子节点计数,php,mysql,eloquent,laravel-5.1,Php,Mysql,Eloquent,Laravel 5.1,我正在我的应用程序中使用。在这里,我有一个表名users和user表的模式,如下所示 id Name Parane_id Node 1 ABC 0 2 XYZ 1 L 3 DFS 1 R 4 GJK 2

我正在我的应用程序中使用。在这里,我有一个表名users和user表的模式,如下所示

id          Name         Parane_id     Node
1           ABC          0             
2           XYZ          1              L
3           DFS          1              R
4           GJK          2              L
5           DSG          3              L
6           FAF          4              R
7           KES          2              R  
我想对用户1(即2,4,6,7)的所有用户左侧进行计数,因此计数为4

若我想要2的右边,那个么它将返回7,所以计数是1

使用
Laravel Elount
怎么可能做到这一点


非常感谢您的帮助。

您希望在特定条件下计算树节点的数目,在本例中,这是节点的左子节点

为您的
用户定义子项。然后创建一个函数遍历子树并进行计数

class User extends Model {

    public function children()
    {
        return $this->hasMany('App\User', 'parent_id');
    }

    public function countChildren($node = null)
    {
        $query = $this->children();
        if (!empty($node))
        {
            $query = $query->where('node', $node);
        }

        $count = 0;
        foreach ($query->get() as $child)
        {
            $count += $child->countChildren() + 1; // Plus 1 to count the direct child
        }
        return $count;
    }

}
要计算用户id 1的左侧子项

$user = User::find(1);
$count = $user->countChildren('L');

“用户1上的所有用户左侧”是什么意思?您能提供更多关于左侧和右侧的解释吗?@mdamia就像每个人都有两条腿一样,一条腿是左侧的,另一条腿是右侧的,所以如果我有孩子,我会将它们添加为左侧或右侧。所以基本上每个父母最多有两个孩子,孩子有子孩子等等。因此,在我的示例中,您可以看到用户
ABC
有两个子2,3,其中
XYZ
是左侧(节点:L表示左侧,R表示右侧),而
DFS
是右侧。希望你能得到它,如果没有,请让我知道。要了解更多信息,请查看图片是否有更好的方法来计算拉雷维尔的孩子数?