【问题标题】:CakePHP Join Model IssueCakePHP 加入模型问题
【发布时间】:2013-07-07 06:29:46
【问题描述】:

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

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

【问题讨论】:

    标签: php cakephp join cakephp-model


    【解决方案1】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2014-12-31
    相关资源
    最近更新 更多