La jonction d'une table à elle-même n'est pas une fonctionnalité intégrée, mais elle peut être réalisée simplement en modifiant le code SQL généré par le générateur CRUD.
Certaines tables peuvent parfois utiliser une clé relationnelle pour elles-mêmes.
Par exemple, une table qui contient à la fois des catégories et des sous-catégories (voir l'image ci-dessous).
Dans cet exemple, chaque sous-catégorie est liée à une catégorie parentale.
PHP CRUD Generator est capable de comprendre ces jointures particulières de la même manière que les relations habituelles.
Les formulaires générés dans l'Admin utiliseront ces relations sans aucun problème.
D'autre part, la requête SQL utilisée pour récupérer les enregistrements de la liste READ doit être modifiée pour fonctionner correctement.
Voici comment procéder :
Ouvrez le modèle de classe PHP correspondant à votre table, qui se trouve dans admin/class/crud/[NomTable].php
Dans ce fichier, vous trouverez deux lignes qui construisent la requête SQL de base.
Avec l'exemple de"catégories" que nous avons donné ci-dessus, cela devrait ressembler à ceci :
$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';
Vous devez modifier cette demande en :
LEFT JOIN
dans la variable $qry_start
.Votre code final devrait ressembler à ceci :
$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`';
Dans cet exemple, c2
est un alias pour la table des catégories
.
Nous l'utilisons avec l'identifiant parent_category_id
Un très bon tutoriel est disponible ici à propos de MySQL Self Join.
Constituez votre base de données