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

时间:2017-09-19 18:58:34

标签: php mysql laravel breadcrumbs

我有一个数据库表"文档" 具有以下结构:

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

在我的Laravel模型中 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;
}

1 个答案:

答案 0 :(得分:2)

在模型上只有一个breadcrumbs属性怎么样?

postcodes.iloc[:,1] = postcodes.iloc[:,1].apply(lambda x: x.split('—'))
def unwrap_codes(row):
row = row['Postcode begins with']
if len(row) > 1:
    for x, y in row:
        while x != y:
            row.append(x=+1)
postcodes['Unwraped'] = postcodes.apply(unwrap_codes, axis=1)

然后你可以致电class File { public function getBreadcrumbsAttribute() { if($this->parent){ return array_merge($this->parent->breadcrumbs, [$this->id]); } return [$this->id]; } } 。如果您需要将文件名或链接传递给数组,这可以很容易地进行调整。