Připojení tabulky k sobě samé není vestavěnou funkcí, ale lze jej provést jednoduchou úpravou kódu SQL vygenerovaného generátorem CRUD.
Některé tabulky mohou někdy používat relační klíč samy pro sebe.
Například tabulka, která obsahuje kategorie a zároveň podkategorie (viz obrázek níže).
V tomto příkladu má každá podkategorie vztah k nadřazené kategorii.
Generátor PHP CRUD je schopen chápat tato konkrétní spojení stejně jako běžné vztahy.
Formuláře vygenerované v administraci budou tyto vztahy bez problémů používat.
Na druhou stranu je třeba upravit dotaz SQL použitý k načtení záznamů ze seznamu READ, aby správně fungoval.
Zde je návod, jak to udělat:
Otevřete model třídy PHP odpovídající vaší tabulce, který najdete v admin/class/crud/[TableName].php
.
V tomto souboru najdete 2 řádky, které vytvářejí základní dotaz SQL.
S výše uvedenými příklady"kategorií" by to mělo vypadat takto:
$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';
Tuto žádost musíte upravit na:
LEFT JOIN
do proměnné $qry_start
.Váš konečný kód by měl vypadat takto:
$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`';
V tomto příkladu je c2
aliasem tabulky kategorií
.
Používáme ji spolu s parent_category_id
Velmi dobrý návod o MySQL Self Join je k dispozici zde
Vytvořte si databázi