帖子和附件的CakePHP关系

时间:2012-10-11 15:52:04

标签: php cakephp

我在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');

但这种关系似乎没有像预期的那样发挥作用。有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:3)

您有两种选择:

选项1(hasAndBelongsToMany)

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

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

选项2(Alternative 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表应按字母顺序排序,因此附件_posts。表格应小写并加以强调。遵循惯例将使您的生活更轻松。

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

答案 1 :(得分:-1)

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

发布模型:

public $hasMany = array('Attachment');

附件模型:

public $belongsTo = array('Post');

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