Wer plant mit CakePHP eine soziale Netzwerkfunktion zu implementieren, muss ein paar kleine Tricks beachten.
Wir gehen davon aus, dass eine “users”-Tabelle existiert, in der alle Nutzer gespeichert sind. Nun legen wir eine Tabelle an, die sich “users_users” nennt mit den Spalten “id”, “user_id”, “friend_id” und weiteren die Relation beschreibenen Spalten, bpsw. “approved”.
Im Model “user” muss nun die HABTM-Relation eingetragen werden:
var $hasAndBelongsToMany = array(
'Friend' => array (
'className' => 'User',
'join_table' => 'users_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id'
)
);
Im Controller “users_controller” muss in der entsprechenden Methode die durch ein Formular übergebenen Daten mittels des folgenden Befehls speichern:
$this->User->UsersUser->save($this->data);
Dafür müssen natürlich die Daten in $this->data in der richtigen Form vorliegen, so dass das Formular richtig gestaltet sein muss. Wichtig ist, dass bei der Formularerzeugung auf Bezug auf “UsersUser” genommen wird, so dass das Array in $this->data auch data['UsersUser'][..] enthält:
echo $form->create('UsersUser', array('url' => array('controller' => 'Users', 'action' => 'tippgemeinschaft')));
Über die Option “url” übergibt man noch den richtigen Controller, da sonst CakePHP versuchen würde, den Controller “users_users_controller” zu laden.