-1

投稿と添付ファイルの両方を含む CakePHP のアプリをまとめています

表は次のとおりです。

Posts = id, title, datetime, content

Attachments = id, title, path, mime_type

Posts_Attachments = id, post_id, attachment_id

ここでの関係に少し混乱しています。これまでのところ、私はやっています:

投稿モデル:

public $hasMany = array('Attachment');

およびアタッチメント モデル:

public $hasMany = array('Post');

しかし、関係は期待どおりに機能していないようです。誰でも助けることができますか?

ありがとう

4

2 に答える 2

3

次の 2 つのオプションがあります。

オプション 1 (hasAndBelongsToMany)

class Post extends AppModel {
    public $hasAndBelongsToMany = array('Attachment');
}

class Attachment extends AppModel {
    public $hasAndBelongsToMany = array('Post');
}

オプション 2 (代わりの hasAndBelongsToMany)

class Post extends AppModel {
    public $hasMany = array('AttachmentsPost');
}

class Attachment extends AppModel {
    public $hasMany = array('AttachmentsPost');
}

class AttachmentsPost extends AppModel {
    public $belongsTo = array('Attachment', 'Post');
}

: HABTM テーブルはアルファベット順に並べる必要があるため、attachments_posts. また、表は小文字でアンダースコアを付ける必要があります。規則に従うことで、生活が楽になります。

オプション 1 を使用すると、より多くの「自動マジック」機能が使用できますが、場合によっては邪魔になります。オプション 2 では、結合テーブルのモデルを作成します。

于 2012-10-11T16:04:23.287 に答える
-1

投稿に多くの添付ファイルがある関係を設定する場合:

ポストモデル:

public $hasMany = array('Attachment');

アタッチメントモデル:

public $belongsTo = array('Post');

そして、あなたのデータベースでは、"attachments" と呼ばれるテーブル (慣習に従っていれば) は外部キーを持つべきです: post_id

于 2012-10-11T15:59:25.373 に答える