[英]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.