Zum Inhalt springen
Der Guide für ein smartes Leben.
Sahnestückchen

Teil 5: Reihe: PHP - Frameworks - Cake PHP

Autoren: Redaktion pcmagazin und Tobias Hauser • 28.4.2009 • ca. 1:55 Min

Spannender wird es bei n-zu-m-Relationen wie sie zwischen Frameworks und Features vorkommen. In diesem Fall handelt es sich im Sinne von Cake PHP um HABTM-Relationen. Dies steht für $hasAndBelongsToMany. Wenn die n-zu-m-Tabelle korrekt benannt ist, ist die Angabe dieser Relation allerdings ganz ein...

Spannender wird es bei n-zu-m-Relationen wie sie zwischen Frameworks und Features vorkommen. In diesem Fall handelt es sich im Sinne von Cake PHP um HABTM-Relationen. Dies steht für $hasAndBelongsToMany. Wenn die n-zu-m-Tabelle korrekt benannt ist, ist die Angabe dieser Relation allerdings ganz einfach:

<?php
class Framework extends AppModel {
var $belongsTo = array(
'Licence' => array(
'className' => 'Licence',
'foreignKey' => 'licence_id'
)
);
var $hasAndBelongsToMany =
'Features';
}
?>

Voraussetzung ist in diesem Beispiel, dass es eine Tabelle features_frameworks gibt. Diese muss zwei Fremdschlüssel mit den Feldnamen feature_id und framework_id besitzen. Alternativ können Sie die Feldnamen und auch weitere SQL-Abfragen in einem Parameter-Array ergänzen. Mehr dazu unter .

In der View müssen Sie nun nur noch die Informationen aus dem Feature-Model verarbeiten. Dazu ergänzen Sie eine einfache Schleife, die jeweils den Namen des Features in ein Listenelement ausgibt:

<div id="view"><table border="1"><tr><th>Frameworks</th><th>Licence</th><th>Features</th></tr><?php
foreach ($frameworks as $framework) {
echo '<tr><td>';
echo $framework['Framework']['name'];
echo '</td><td>';
echo $framework['Licence']['name'];
echo '</td><td><ul>';
foreach ($framework['Features'] as
$feature) {
echo '<li>';
echo $feature['name'];
echo '</li>';
}
echo '</ul></td></tr>';
}
?></table></div>

Sie sehen an der Struktur der Daten, dass alle Daten in Cake PHP in einem Model vorgehalten werden, das wiederum durch einen Array dargestellt wird. Für unser Beispiel besteht der Array mit dem Ergebnis dabei aus mehreren Arrays, die die einzelnen Datenzeilen enthalten.

PHP - Frameworks Teil 1 - Cake PHP
Automatisch: Ohne eigenen Datenbank-Abfrage- Code entsteht eine einfache Ausgabe.
© Archiv

Die Daten eines Models sind dann unter dem Modelnamen im Singular und mit Großbuchstaben verfügbar, also beispielsweise Framework. Dies macht dann auch das Speichern der Daten sehr einfach. Jedes Model besitzt eine save()-Methode, die von AppModel geerbt wird. Dieser Methode übergeben Sie einfach die Daten in der Array-Struktur.

Guter Einstieg

Cake PHP ist stringent aufgebaut und mit umfangreichen Funktionalitäten versehen. Reizvoll ist auch die Fähigkeit, sowohl mit PHP 4 als auch mit PHP 5 zu arbeiten. Sie können etwa auch für die PHP 5-Variante alle Eigenschaften mit public statt var versehen.

Dank der umfangreichen Dokumentation und der Bakery eignet sich Cake PHP sehr gut als Einstieg in die Welt der Frameworks.

Dank Erweiterbarkeit über das Vendor-Verzeichnis und dank umfangreicher Bibliotheken wie beispielsweise Prototype and Scriptaculous für Ajax ist aber auch jenseits des Einstiegs für ausreichend Funktionalität gesorgt.