Ich habe folgendes Setup für meine CakePHP App:Speichern von Tags in einer Datenbanktabelle in CakePHP
Posts
id
title
content
Topics
id
title
Topic_Posts
id
topic_id
post_id
Also im Grunde habe ich eine Tabelle von Themen (Tags), die alle einzigartig sind und eine ID haben. Und dann können sie angehängt werden, um sie mithilfe der Join-Tabelle Topic_Posts zu veröffentlichen. Wenn ein Benutzer einen neuen Beitrag erstellt, füllt er die Themen aus, indem er sie in ein durch ein Komma getrenntes Textfeld eingibt, das diese in der Tabelle "Topics" speichert, falls sie nicht bereits vorhanden sind, und die Verweise dann in der Tabelle "Topic_posts" speichern. Ich habe die oben wie so eingestellt Modelle:
Beitrag Modell:
class Post extends AppModel
{
public $name = 'Post';
public $hasAndBelongsToMany = array(
'Topic' => array('with' => 'TopicPost')
);
}
Topic Modell:
class Topic extends AppModel
{
public $hasMany = array(
'TopicPost'
);
}
TopicPost Modell:
class TopicPost extends AppModel {
public $belongsTo = array(
'Topic', 'Post'
);
}
Und für die neue post-Methode I habe dies bisher:
public function add()
{
if ($this->request->is('post'))
{
//$this->Post->create();
if ($this->Post->saveAll($this->request->data))
{
// Redirect the user to the newly created post (pass the slug for performance)
$this->redirect(array('controller'=>'posts','action'=>'view','id'=>$this->Post->id));
}
else
{
$this->Session->setFlash('Server broke!');
}
}
}
Wie Sie sehen können, habe ich saveAll
verwendet, aber wie gehe ich mit den Themendaten um?
Ich habe gesehen, Dinge wie: http://bakery.cakephp.org/articles/dooltaz/2007/05/02/simple-tagging-behavior aber ich suche diese viel einfacher und moderner machen (diese Artikel Daten 2007), und ich bin auch mit CakePHP 2.1
Ehrfürchtig, die fein gearbeitet hat. Ich musste jedoch keinen meiner Tabellennamen oder Modellnamen ändern. Danke;) – Cameron
Nein, du musst es nicht ändern. Aber nach den CakePHP-Konventionen solltest du;) Lies dies durch: http://book.cakephp.org/2.0/en/models/associations-linking-model-together.html#hasandbelongstomany-habtm (Die Infobox unter den Beispielen) – func0der