Eu tenho uma saída de matriz é estrutura de árvore como esta:
Aqui, eu tenho uma tabela de banco de dados com relacionamento filho pai como:
public function up()
{
Schema::create("trees", function (Blueprint $table) {
$table->increments("id");
$table->integer("parent_id")->unsigned()->nullable();
$table->string("name");
$table->integer("has_child");
$table->integer("depth");
$table->timestamps();
$table->foreign("parent_id")->references("id")->on("trees")->onDelete("cascade");
}
}
Aqui,
Profundidade define profundidade da raiz na árvore, parent_id
refere-se a pai na mesma tabela e has_child
define existência de criança. Para a folha, has_child
é zero e para o topo parent_id é nulo.
A profundidade pode ser qualquer valor até 5. No caso acima, há apenas 2 para fins de teste.
Aqui está o meu registro de banco de dados de amostra:
Eu tenho a estrutura de árvore acima recursivamente no controlador como:
public function getChilds($d){
$tree = array();
$children = array();
$tree["parent"] = $d->toArray();
if($d->has_child==1){
$data = Tree::where("parent_id",$d->id)->get();
foreach ($data as $d) {
$first = $this->getChilds($d);
array_push($children, $first);
}
}
$tree["children"] = $children;
return $tree;
}
public function getTree(){
$tree = array();
$data = Tree::where("parent_id",null)->get();
foreach ($data as $d) {
$first = $this->getChilds($d);
array_push($tree, $first);
}
return view("tree",compact("tree"));
}
Agora,
Eu quero exibir esses dados em estrutura de árvore. Mas, por causa da profundidade variável, eu não consigo descobrir a profundidade a qual devo ir.
Existe alguma maneira de exibir esta estrutura de forma recursiva na lâmina laravel?
A saída esperada é algo como isto:
One0
One0Two0
One0Two0Three0
One0Two0Three1
One0Two1
One0Two1Three0
One0Two1Three1
One0Two2
One0Two2Three0
One0Two2Three1
Qualquer tipo de ajuda é apreciado.
Respostas:
0 para resposta № 1Eu irei te recomendar o pacote laravel-nestedseto que tornará sua vida realmente fácil, por favor, siga a documentação do pacote para criar sua estrutura de tabela, recuperar, salvar e atualizar os dados recursivos será muito fácil. aqui está o link do pacote.
https://github.com/lazychaser/laravel-nestedset