CakePHP加入模型问题

时间:2013-07-07 06:29:46

标签: php cakephp join cakephp-appmodel

我的数据库,操作,操作类型和社交媒体中有三种关系。每个操作都有一个操作类型,许多操作可以共享相同的操作类型。此外,每个动作都属于特定的社交媒体,也可以由许多动作共享。因此,在此上下文中,“Action”是社交媒体和动作类型之间的连接模型。

我从CakePHP开始,我需要的是以社交网络格式生成一个包含动作类型的列表 - 动作类型名称。我已经在我的应用程序中设置了Action,ActionType和SocialMedia模型关联,但尝试执行

$actionTypes = Set::combine($this->Action->ActionType->find('all', array(
        'fields' => array('ActionType.id',"CONCAT(SocialMedia.name,' ',ActionType.name) as name"),
        'contain' => array('SocialMedia')
    )),'{n}.ActionType.id','{n}.0.name');

引发SQL错误,说没有这样的列SocialMedia.name

1 个答案:

答案 0 :(得分:0)

Containable将为每个表创建单独的查询,然后将其组合。在您的情况下,CakePHP将为ActionType表创建一个查询,为SocialMedia创建另一个单独的查询。

阅读Mark Story的本教程,了解更多详情http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations

您可以在教程中使用bindModel来执行一个查询并使SocialMedia.name列可用。