0

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

我从 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

4

1 回答 1

0

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

阅读 Mark Story 中的本教程以获取更多详细信息http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations

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

于 2013-07-07T23:47:48.337 回答