0

我希望有人能解决我遇到的这个问题。出于某种原因,关于 SO 的其他答案似乎都没有帮助我。

我有 2 个具有 HABTM 关系的表。出版物有很多作者,作者也有很多出版物。就我而言,我试图输出数据库中所有出版物的列表,以及它们的相应作者。

我有以下表格:

出版物:

身份证标题

0 测试发布

作者:

id 名字 姓氏 中间

0 约翰·多伊

作者_出版物:

id author_id Publication_id

0 0 0

每个表的“id”列设置为主键。

我的出版物模型如下所示:

class Publication extends AppModel {

    var $name = 'Publication';
    var $hasAndBelongsToMany = array(
        'Author'=>array(
            'className'=>'Author'
        )
    );     
}

最后,PublicationsController 具有以下功能:

function index() {
$publications = $this->Publication->find('all');
$this->set('publications', $publications);
}

以下是出版物现在包含的内容:

Array ( [0] => Array ( [Publication] => Array ( [id] => 0 [title] => TestPublica [type_id] => 1 ) [Author] => Array ( ) ) ) 

为什么是这样?我期待(也许这是我的问题......)作者 John Doe 应该出现在 Author 数组中。如果应该是,我哪里错了?我需要在那里的某个地方调用 bindModel 吗?

或者......代码是否真的按照它应该的方式执行并且我的期望不正确?如果是这样,我将如何返回所有出版物及其所有作者的列表?

谢谢你的时间!

4

1 回答 1

0

我相信我找到了问题所在。为了测试目的,我手动将记录插入数据库。我将每个表的第一条记录上的主键 ID 设置为零。SQL DB 通常(或总是?)以 1 的主键索引开始第一条记录,而不是 0。我不确定为什么 cake 不能使用这个,但是将 id 更改为 1 解决了这个问题。奇怪的...

于 2012-07-03T03:54:49.527 回答