L'unione di una tabella a se stessa non è una funzione integrata, ma può essere effettuata semplicemente modificando il codice SQL generato dal Generatore CRUD.
Alcune tabelle possono talvolta utilizzare una chiave relazionale per se stesse.
Ad esempio, una tabella che contiene categorie e sottocategorie allo stesso tempo (veda l'immagine sottostante).
In questo esempio, ogni sottocategoria ha una relazione con una categoria madre.
PHP CRUD Generator è in grado di comprendere queste particolari unioni allo stesso modo delle relazioni abituali.
I moduli generati nell'Admin utilizzeranno queste relazioni senza alcun problema.
D'altra parte, la query SQL utilizzata per recuperare i record dall'elenco READ deve essere modificata per funzionare correttamente.
Ecco come fare:
Apra il modello di classe PHP corrispondente alla sua tabella, che si trova in admin/class/crud/[NomeTabella].php.
In questo file troverà 2 righe che costruiscono la query SQL di base.
Con l'esempio di'categorie' che abbiamo fornito sopra, dovrebbe apparire così:
$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';
Deve modificare questa richiesta in:
LEFT JOIN
nella variabile $qry_start
.Il suo codice finale dovrebbe assomigliare a questo:
$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`';
In questo esempio, c2
è un alias per la tabella delle categorie
.
Lo utilizziamo con il parent_category_id
Qui è disponibile un ottimo tutorial sull'autoadesione di MySQL.
Costruisca il suo database