我在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');
但这种关系似乎没有像预期的那样发挥作用。有人可以帮忙吗?
由于
答案 0 :(得分:3)
您有两种选择:
class Post extends AppModel {
public $hasAndBelongsToMany = array('Attachment');
}
class Attachment extends AppModel {
public $hasAndBelongsToMany = array('Post');
}
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