首页 > 解决方案 > laravel 打印递归树

问题描述

文件.blade.php

@foreach($places as $p)
    <li>
     <a href="">{{ $p->name }}</a>
    @if($p->children->count())
          @include ('tree', ['entries' => $p->children]);
    @endif
    <li>
@endforeach

</ul>

我试图在我的视图中递归地打印树,我在数据库中只有 2 行(父和子),这里的问题是p->children->count()返回一个空字符串,而不是 0,并且它被威胁为真的,什么数孩子的正确方法是什么?

Maximum function nesting level of '256' reached, aborting!

因为即使没有孩子也会返回 true

这就是我在控制器中获取它的方式:

public function index()
{
    $data = [];
    $data['places'] = Place::with(['children', 'parent'])->get();
    return view('places/index', $data);
}

更新:

class Place extends Model
{
    public function parent()
    {
        return $this->belongsTo('App\Place', 'parent_id');
    }

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

标签: phplaraveltree

解决方案


推荐阅读