Unir uma tabela a ela mesma não é um recurso incorporado, mas pode ser feito simplesmente modificando o código SQL gerado pelo CRUD Generator.
Algumas tabelas podem, às vezes, usar uma chave relacional para si mesmas.
Por exemplo, uma tabela que contém categorias e subcategorias ao mesmo tempo (veja a imagem abaixo).
Nesse exemplo, cada subcategoria tem um relacionamento com uma categoria principal.
O PHP CRUD Generator é capaz de entender essas uniões específicas da mesma forma que os relacionamentos usuais.
Os formulários gerados no Admin usarão esses relacionamentos sem nenhum problema.
Por outro lado, a consulta SQL usada para recuperar registros da lista READ deve ser editada para funcionar corretamente.
Veja como fazer isso:
Abra o modelo de classe PHP correspondente à sua tabela, que pode ser encontrado em admin/class/crud/[TableName].php
Nesse arquivo, o senhor encontrará duas linhas que criam a consulta SQL básica.
Com o exemplo de"categorias" que fornecemos acima, ele deve ter a seguinte aparência:
$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';
O senhor precisa editar essa solicitação para:
LEFT JOIN
para a variável $qry_start
.Seu código final deve ter a seguinte aparência:
$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`';
Neste exemplo, c2
é um alias para a tabela de categorias
.
Nós a usamos com o parent_category_id
Há um tutorial muito bom disponível aqui sobre o MySQL Self Join
Construa seu banco de dados