Unir una tabla a sí misma no es una característica incorporada, pero puede hacerse simplemente modificando el código SQL generado por el Generador CRUD.
Algunas tablas pueden utilizar a veces una clave relacional para sí mismas.
Por ejemplo, una tabla que contiene a la vez categorías y subcategorías (véase la imagen siguiente).
En este ejemplo, cada subcategoría tiene una relación con una categoría padre.
El Generador PHP CRUD es capaz de entender estas uniones particulares de la misma manera que las relaciones habituales.
Los formularios generados en el Admin utilizarán estas relaciones sin ningún problema.
Por otro lado, la consulta SQL utilizada para recuperar registros de la lista READ debe editarse para que funcione correctamente.
He aquí cómo hacerlo:
Abra el modelo de clase PHP correspondiente a su tabla, que se encuentra en admin/class/crud/[TableName].php
En este archivo encontrará 2 líneas que construyen la consulta SQL base.
Con el ejemplo anterior de"categorías" que hemos dado, debería tener este aspecto:
$this->join_query = ' LEFT JOIN `categories` ON `categories`.`parent_category_id`=`categories`.`id`';
$qry_start = 'SELECT
`categories`.`id`,
`categories`.`parent_category_id` AS `categories_parent_category_id`,
`categories`.`name`
FROM categories';
Tiene que editar esta solicitud para:
LEFT JOIN
a la variable $qry_start
.Su código final debería tener este aspecto:
$this->join_query = '';
$qry_start = 'SELECT
`categories`.`id`,
`c2`.`parent_category_id` AS `categories_parent_category_id`,
`categories`.`name`
FROM categories
LEFT JOIN `categories` c2
ON `categories`.`parent_category_id`=`c2`.`id`';
En este ejemplo, c2
es un alias de la tabla categories
.
Lo utilizamos con el parent_category_id
Aquí encontrará un tutorial muy bueno sobre MySQL Self Join
Construya su base de datos