Eleazar Resendez

Just some coding blurbs

Laravel Baum's rebuild tree command

3 weeks ago · 1 MIN READ
#Laravel 5.*  #Web development 

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