繁体   English   中英

如何从查询中获取面包屑数组(在Laravel中)?

[英]How can I get a breadcrumbs array form a query (in Laravel)?

我有一个具有以下结构的数据库表“文档”

// table documents:
|id|parent_id|name       |
|1 |0        |foldername1|
|2 |0        |foldername2|
|2 |1        |subfolder  |

在我的Laravel Model Document.php中,我有以下方法:

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

但是,如何在我的控制器中得到包含面包屑的数组

我已经尝试了很多东西,但是没有用... :(

DocumentController.php:

// NOT WORKING EXAMPLE!!
public function index()
{
    $file = Document::findOrFail(2);

    if ($file->parent) {
         $breadcrumbs[] = $this->setBreadcrumbs($file->parent);
    }
    dd($breadcrumbs);

}

private function setBreadcrumbs(Document $file)
{
    $arr = [];
    if ($file->parent) {
        $arr[] = $this->setBreadcrumbs($file->parent);
    } else {
        return $arr;
    }
    return $file->id;
}

在模型上仅具有面包屑属性怎么样?

class File {

    public function getBreadcrumbsAttribute()
    {
        if($this->parent){
            return array_merge($this->parent->breadcrumbs, [$this->id]);
        }
        return [$this->id];
    }
}

然后,您只需调用$file->breadcrumbs 如果您需要将文件名或链接传递给数组,则可以轻松进行调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM