如何从查询中获取面包屑数组(在 Laravel 中)?
How can I get a breadcrumbs array form a query (in Laravel)?
我有一个 数据库 table "documents" 具有以下结构:
// 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;
}
在模型上添加面包屑属性如何?
class File {
public function getBreadcrumbsAttribute()
{
if($this->parent){
return array_merge($this->parent->breadcrumbs, [$this->id]);
}
return [$this->id];
}
}
那你就可以打电话$file->breadcrumbs
了。如果您需要将文件名或链接传递给数组,这可以很容易地进行调整。
我有一个 数据库 table "documents" 具有以下结构:
// 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;
}
在模型上添加面包屑属性如何?
class File {
public function getBreadcrumbsAttribute()
{
if($this->parent){
return array_merge($this->parent->breadcrumbs, [$this->id]);
}
return [$this->id];
}
}
那你就可以打电话$file->breadcrumbs
了。如果您需要将文件名或链接传递给数组,这可以很容易地进行调整。