php - Laravel 递归关系并返回 $this

标签 php laravel recursion relationship

我有一个行业级别未知的导航栏,它可以有子行业,我想编写递归关系以获得最上面的一个并将其显示为类别。我试过这个:

public function category()
{
    if($this->parent_id == 0){
        return $this;
    } else {
        $this->parent_industry->category();
    }
}

但我不断得到 LogicException:关系方法必须返回 Illuminate\Database\Eloquent\Relations\Relation 类型的对象

如何写递归关系并返回$this

最佳答案

试试这个关系:

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

public function parent()
{
    return $this->belongsTo('App\MenuItem', 'parent_id');
}

public function getRoot()
{
    $cur = $this;
    while ($cur->parent) {
        $cur = $cur->parent;
    }
    return $cur;
}

关于php - Laravel 递归关系并返回 $this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448886/

相关文章:

php - 这是 mysql_real_escape_string 的正常行为吗?

php - Laravel 一条语句中的多个迁移表

php - Laravel 中的 Id 命名约定

algorithm - 递归关系 : Writing a recurrence relation

Swift 递归闭包栈溢出 bug

algorithm - 排序双链表插入中的递归

php - 什么是更快的 : in_array or isset?

php - 为什么我在通过 array_key_exist 检查时收到此通知

php - 使用#tag 获取完整 URL

php - 1452 无法添加或更新子行 : a foreign key constraint fails Laravel 5. 4