通过两个表--图书和作者之间的关联,我建立了一个hasMany。这些关联正常工作,除非试图检索属于一本书的所有作者。如果我这么做
$book = $this->Book->findById($id)返回的数组将而不是有一个数组作者;它将具有AuthorToBook连接模型信息,但不会自动获取与其关联的作者。
为了检索连接模型和相关的作者,我必须将递归设置为2。我还将重新获取每个AuthorToBook关联的图书数据。
'AuthorToBook' => array(
(int) 0 => array(
'id' => '1',
'author_id' => '1',
'book_id' => '2',
'Author' => array(
'id' => '1',
'name' => 'J.R.R Tolkien',
'date_of_birth' => '1892-01-03 00:00:00',
'bio' => 'Professor and inventor of the Elvish Language'
),
'Book' => array(
'id' => '2',
'title' => 'Return of the King',
'pagecount' => '1200',
'publisher_id' => '1'
)
)
)现在的问题是--如何在不设置递归参数的情况下通过关系获取由hasMany形成的关联模型?
这是消息来源
<?php
class Author extends AppModel
{
public $hasMany = array('AuthorToBook');
}
?>
<?php
class AuthorToBook extends AppModel
{
public $useTable = 'authors_to_books';
public $belongsTo = array('Author', 'Book');
}
?>
<?php
class Book extends AppModel {
public $hasMany = array('AuthorToBook');
}
?>发布于 2014-03-02 22:04:57
可控制行为是您的朋友,是递归的替代品。它允许您指定要在每个查询中检索的关联模型。
递归是一件很酷的事情,但大家一致认为,除了为CakePHP编写入门教程之外,不应该实际使用递归。在您的public $recursive = -1;中设置AppModel (默认情况下使其关闭),永远不要回头看。
https://stackoverflow.com/questions/22129857
复制相似问题