【问题标题】:Why I can't see the result of HABTM?为什么我看不到 HABTM 的结果?
【发布时间】:2013-04-05 05:15:10
【问题描述】:

几个月以来我一直在使用 cakephp,今天遇到一个问题,我不知道为什么它不能像往常一样工作。

我有三张桌子:

帖子 厘米 post_cmets

在模型中,我设置了:

评论模型:

var $hasAndBelongsToMany = array('Post');

后模型

var $hasAndBelongsToMany = array('Comment');

然后在我的控制器中,例如 PostController:

$this->set('comments', $this->Post->Comment->find('list', array('order' => 'Comment.id')));

然后在我的帖子视图中我有:

<?php
echo $this->Form->create('Post');
echo $this->Form->input('name', array('label' => 'Name', 'maxlength' => '100'));
echo $this->Form->input('Comment.Comment', array('label' => 'New Comment', 'type' => 'select', 'multiple' => true));
echo $this->Form->submit('Add', array('class' => 'button'));
?>

在我的其他项目中它总是有效! 我的“评论”总是显示在列表中,但在这里,我不知道为什么它不起作用,什么都没有显示,是我忘记了什么吗?

问候,

4m0ni4c.

【问题讨论】:

  • 您可能不想对帖子和 cmets 使用 HABTM 关系,因为评论不能属于多个帖子,它通常只属于一个帖子,一个帖子可以有多个 cmets .因此Post应该haveManyComment,而Comment应该belongToPost
  • 我选择这个例子来说明我的问题,我的情况,确实需要HABTM关系:)
  • 我的主要问题是我通常不需要在其他输入中指定“选项”值,但是在这里,我真的不知道为什么,如果我不指定这个变量,我无法显示我的评论:/
  • 如果您向我们提出实际问题,我们或许能够更好地诊断。
  • 实际问题是,如果不设置“options”变量,我无法在通过输入“Comment.Comment”设置的列表中显示我的评论。

标签: cakephp has-and-belongs-to-many


【解决方案1】:

我不知道你是否解决了这个问题,但根据 Cake 的约定,HABTM 表应该命名为alphabeticaly 以便它们神奇地工作。

这个新的连接表的名称需要包含所涉及的两个模型的名称,按字母顺序排列,并用下划线 (_) 分隔。表的内容应该是两个字段,每个外键(应该是整数)指向所涉及模型的两个主键

所以您的 posts_cmets 表应该是 cmets_posts,除非您直接在 Post 和 Comment 模型上更改关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2012-03-31
    相关资源
    最近更新 更多