我的数据库,操作,操作类型和社交媒体中有三种关系。每个操作都有一个操作类型,许多操作可以共享相同的操作类型。此外,每个动作都属于特定的社交媒体,也可以由许多动作共享。因此,在此上下文中,“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
答案 0 :(得分:0)
Containable将为每个表创建单独的查询,然后将其组合。在您的情况下,CakePHP将为ActionType表创建一个查询,为SocialMedia创建另一个单独的查询。
阅读Mark Story的本教程,了解更多详情http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations
您可以在教程中使用bindModel来执行一个查询并使SocialMedia.name列可用。