Eleazar Resendez

Just some coding blurbs

Laravel Baum's rebuild tree command

2 months ago · 1 MIN READ
#Laravel 5.* 

Si se utiliza el paquete etrapat/baum para formar árboles jerárquicos en nuestros modelos y al cambiar manualmente en la base de datos la columna parent_id, los índices lft, rgt y depth no se actualizarán automáticamente.

Para ello y de acuerdo con la documentación del paquete, existe el método estático rebuild() para reindexar. Lo único es tener bien establecida nuestra columna de parent_ids y Baum hará lo mejor posible para reconstruir los indices.

Lo siguiente es un sencillo comando para realizar el rebuild, solamente es necesario indicar el nombre del modelo.

protected $signature = 'rebuild:tree';

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->info('This method will re-index all your lft, rgt and depth column values, inspecting your tree only from the parent <-> children relation standpoint');
$model = $this->ask('Model name');

try {
$tree = "App\\Models\\".$model;
$tree::rebuild(true);
$this->line('<info>[✔]</info> Success! Tree rebuilded.');
} catch (Exception $e) {
$this->line("<error>[✘]</error> {$e->getMessage()}");
}
}

···

Eleazar Resendez

Eleazar is a very passionate Web Application Developer and Software Engineer, constantly experimenting with new technologies and striving to better as developer and the development community as a whole.
comments powered by Disqus


Proudly powered by Canvas · Sign In