CakePHP HABTM发现...没有返回预期的结果

时间:2012-07-02 22:51:22

标签: php cakephp

我希望有人可以解决我遇到的这个问题。由于某些原因,SO上的其他答案似乎都没有帮助我。

我有两个HABTM关系表。出版物有很多作者,作者有很多出版物。在我的例子中,我试图输出数据库中所有出版物的列表,以及相应的作者。

我有以下表格:

出版物:

id title

0 TestPublication

作者:

id firstname lastname middle

0 John Doe A

authors_publications:

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吗?

或者......代码实际执行的方式是什么,我的期望是不正确的?如果是这样,我将如何返回所有出版物的列表及其所有作者?

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

我相信我发现了这个问题。我手动将记录插入数据库以进行测试。我将每个表的第一个记录上的主键id设置为零。 SQL DB通常(或总是?)以主键索引为1而不是0来启动第一条记录。我不确定为什么蛋糕不能用于此,但将id更改为1解决了问题。奇怪的...