【发布时间】:2012-05-22 10:15:21
【问题描述】:
我正试图通过 CakePHP 中的关系了解双向自引用 hasMany(真是满口!)。
我正在开发一个图片匹配网站。
- 图片通过“匹配”(连接模型)与其他图片相关联。
- 每场比赛有两张图片,并存储当前评分和总票数。
- 查看图片时,其任一方向的所有相关图片都应该可用(通过其匹配项)。
我首先通过与连接模型的关系定义了一个 hasMany。
pictures_matches 连接表有这样的结构:
id | picture_id | partner_id | rating | total_votes
我的匹配加入模型关联如下所示:
class PictureMatch extends AppModel {
...
public $belongsTo = array(
'Picture' => array(
'className' => 'Picture',
'foreignKey' => 'picture_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Partner' => array(
'className' => 'Picture',
'foreignKey' => 'partner_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
每张图片都需要能够从任一方向访问其相关图片,但这是我无法掌握的地方。 看起来我需要保存关系的双方,但这会破坏存储在连接模型中的额外数据 - 有两个数据库条目,投票可能会因方向而异。
任何人都可以阐明在 CakePHP 中执行此操作的最佳方法吗?我很困惑。
是否可以动态创建反向关系?
【问题讨论】:
-
你有没有想过这个问题?
-
Partner 部分下的 className 应该是“Partner”吗?
标签: cakephp associations has-many-through