私のアプリには、投稿とトピックのシステムがあり、Topic_Postという結合テーブルを使用してトピックを投稿に添付しています。ユーザーが投稿のトピックを編集または削除するときに効率的でクリーンであることを確認するには、新しい関係を再追加または追加する前に、すべての関係を削除します。注:実際に削除するのではなく、投稿にアタッチまたはデタッチすることを意味します。トピック
これを行うための最良の方法は何ですか?投稿IDをメソッドに渡してから、トピック投稿テーブルで一致するpost_idを持つすべてのレコードを見つけて、それらのレコードをテーブルから削除する必要があります。
これらは関連付けです:
Post.php
class Post extends AppModel
{
public $name = 'Post';
public $belongsTo = 'User';
public $hasMany = array('Answer');
// Has many topics that belong to topic post join table... jazz
public $hasAndBelongsToMany = array(
'Topic' => array('with' => 'TopicPost')
);
}
Topic.php
class Topic extends AppModel
{
public $hasMany = array(
'TopicPost'
);
}
TopicPost.php
class TopicPost extends AppModel {
public $belongsTo = array(
'Topic', 'Post'
);
}
Topiic_Postテーブルでは、重複を防ぐために2つの外部キーを一意にしました。
id
int(11)unsigned NOT NULL auto_increment、
topic_id
int(11)NOT NULL、
post_id
int(11)NOT NULL、PRIMARY KEY(id
)、UNIQUE KEY unique_row
(topic_id
、post_id
)
そして、この方法はこれまでのところ次のようになっています。
function cleanPostTopics ($postId) {
$post = $this->find('first', 'condition'=>array('Post.id'=>$postId));
}
$post
次に、これを使用してTopicPostテーブル内のすべてのレコードを検索し、それらを削除するにはどうすればよいでしょうか。このメソッドはモデルの1つに含まれており、私の関連付けに基づいて他のモデルと通信できる必要があることを忘れないでください。
重複の発生を防ぐはずの組み込みのCakePHPロジックのいずれかが壊れた場合は、次の方法を使用してトピックを挿入/添付することに注意してください。http://pastebin.com/d2Kt8D2R