-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

你有两个选择:

选项 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 表应按字母顺序排列,附件是按字母顺序排列的。表格应该小写并带有下划线。遵循约定将使您的生活更轻松。

使用选项 1 具有更多“自动魔术”功能,但有时它会妨碍您。选项 2 涉及为连接表创建模型。

于 2012-10-11T16:04:23.287 回答
-1

如果你想设置一个帖子有很多附件的关系,那么:

岗位型号:

public $hasMany = array('Attachment');

附件型号:

public $belongsTo = array('Post');

在您的数据库中,名为“附件”的表(如果您遵循约定)应该具有外键:post_id

于 2012-10-11T15:59:25.373 回答