首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当存在关系时,CakePHP连接表

当存在关系时,CakePHP连接表
EN

Stack Overflow用户
提问于 2011-04-27 17:27:47
回答 2查看 231关注 0票数 1

我有一个Message模型,hasMany Librarian

我遇到的问题是,当我试图将一个表连接到Librarian表时,该表还没有被连接--也就是说,我创建的连接在创建关系连接之前显示为

代码语言:javascript
复制
$this->Message->find('all', array(
  'joins' => array(
    array(
      'table' => 'users',
      'alias' => 'User',
      'conditions' => array('User.id = Librarian.id')
    )
  )
));

这将按照以下思路生成一个查询:

代码语言:javascript
复制
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表已经包含在构建查询中之后,我如何加入它?

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2011-04-28 15:07:28

我不知道我解释得有多好。

我可能应该把这个问题分解成具体的关系:

信息hasMany图书馆员

图书管理员belongsTo用户

这意味着我可以设置recursive = 2来获取用户数据。

当然,这是昂贵的,但这是自然的事情,在这种情况下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5808106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档