我有一个Message模型,hasMany Librarian。
我遇到的问题是,当我试图将一个表连接到Librarian表时,该表还没有被连接--也就是说,我创建的连接在创建关系连接之前显示为。
$this->Message->find('all', array(
'joins' => array(
array(
'table' => 'users',
'alias' => 'User',
'conditions' => array('User.id = Librarian.id')
)
)
));这将按照以下思路生成一个查询:
SELECT `Message`.`id`, `Message`.`librarian_id`,
`Message`.`Librarian`.`id`, `Librarian`.`user_id`
FROM `contact_messages` AS `Message`
INNER JOIN users AS `User` ON (`User`.`id` = `Librarian`.`user_id`)
LEFT JOIN `librarians` AS `Librarian`
ON (`Message`.`librarian_id` = `Librarian`.`id`)
WHERE `Message`.`id` = 3我知道错误了
“on子句”中的
未知列'Librarian.user_id‘
在hasMany表已经包含在构建查询中之后,我如何加入它?
干杯
发布于 2011-04-27 17:51:25
我倾向于通过将一种关系绑定到代码中来解决这个问题。这是一种很麻烦的方法,非常古老,非常1.2。
这是使用bindModel(),你可以在这里读到,http://book.cakephp.org/view/3/The-Manual#!/view/78/Associations-Linking-Models-Together
模型方法的文档在这里,http://api12.cakephp.org/class/model#method-ModelbindModel
基本的想法是,即使不存在任何关系,或者它们之间有着遥远的关系,你也可以暂时地将两个模型结合在一起。我已经做过了,而且确实有用。我在某个地方有一些代码,但不能交给你。
另外,如果您使用的是新的东西,那么一定要查看Containable(),因为据我所知,它包含了更多的模型绑定。http://book.cakephp.org/#!/view/1323/Containable
发布于 2011-04-28 15:07:28
我不知道我解释得有多好。
我可能应该把这个问题分解成具体的关系:
信息hasMany图书馆员
图书管理员belongsTo用户
这意味着我可以设置recursive = 2来获取用户数据。
当然,这是昂贵的,但这是自然的事情,在这种情况下。
https://stackoverflow.com/questions/5808106
复制相似问题