2013-07-07 23 views
0

我在数据库,操作,操作类型和社交媒体中有三种关系。每个动作都有一个动作类型,许多动作都可以共享相同的动作类型。而且,每个动作都属于特定的社交媒体,可以被许多动作共享。所以在这种情况下,“行动”是社交媒体和行动类型之间的联合模式。CakePHP加入模式问题

我以CakePHP开始,我需要的是在格式社交网络 - 动作类型名称中使用动作类型生成列表。我已经设置了操作,操作类型和社会化媒体的模型协会在我的应用程序,但试图执行

$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

中可容纳会创建单独的查询每个表格并在之后进行合并。在你的情况下,CakePHP将为ActionType表创建一个查询,为SocialMedia创建另一个单独的查询。

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

您可以使用bindModel,因为他在本教程中提到执行一个查询,使SocialMedia.name列可用。

+0

使用find方法中的join选项可以达到同样的效果吗? – danielperaza

+0

我相信这是可能的...检查此问题http://stackoverflow.com/questions/5079908/cakephp-find-method-with-join –