Tree (Baum)
Tree
-Beziehungen ermöglichen die Modellierung baumartiger bzw. hierarchischer Strukturen innerhalb eines Models.
Modellierung
Eine Tree
-Beziehung wird im ORM durch zwei Bestandteile modelliert.
- Ein ForeignKey auf dasselbe Model.
- Eine
Tree
-Beziehung im selben Model.
Deklaration
Eine Tree
-Beziehung wird mit der Methode formsTree
der Klasse Table
erstellt.
php
formsTree(string $parent_fk = 'parent_id', string $children = 'children'): Tree
- Der Parameter
$parent_fk
spezifiert die selbstreferentielle Fremdschlüsselspalte. Standardmäßig wirdparent_id
verwendet. - Der Parameter
$children
definiert den Namen der Eigenschaft, mit der auf die Kindobjekte zugegriffen wird. Standardmäßig wirdchildren
verwendet.
Beispiel
Folgendes Beispiel zeigt eine Tree
-Beziehung innerhalb des Models Category
. Jede Kategorie kann also höchstens eine Elternkategorie haben (0..1
) und beliebig viele Kindkategorien (0..*
).
php
class Category extends Model
{
protected static function init(Table $table): void
{
$table->setColumns([
'parent_id' => Column::fk(Category::class)->nullable(),
// ...
]);
$table->formsTree();
}
}
Nutzung
todo