【问题标题】:cakephp - difficulty to access a specific information in my controllercakephp - 难以访问我的控制器中的特定信息
【发布时间】:2013-05-16 03:44:43
【问题描述】:

我有这些表以及它们之间的关系:

  • 1 个项目有很多配置上下文 1 个问题类型有很多
  • optionconfiguration hasmany configurationcontext hasmany
  • optionconfiguration(中间表不存在)

我的目标是获取类似此查询的信息。

SELECT IT.id, IT.pname
FROM configurationcontext               CC
LEFT OUTER JOIN optionconfiguration     OC ON OC.fieldconfig = CC.fieldconfigscheme
LEFT OUTER JOIN issuetype               IT ON IT.id = OC.optionid
WHERE CC.project = 10000

我的疑惑: - 使用哪个控制器来创建返回此信息的函数? - 我如何获得这些信息?

谢谢:)

【问题讨论】:

    标签: cakephp model controller


    【解决方案1】:

    假设我的型号名称正确,这应该可以解决问题:

    $this->ConfigurationContext->find('all', array(
        'joins' => array(
            array(
                'table' => 'optionconfiguration',
                'alias' => 'OptionConfiguration',
                'type' => 'LEFT OUTER JOIN',
                'conditions' => array(
                    'OptionConfiguration.fieldconfig = ConfigurationContext.fieldconfigscheme'
                )
            ),
            array(
                'table' => 'issuetype',
                'alias' => 'IssueType',
                'type' => 'LEFT OUTER JOIN',
                'conditions' => array(
                    'IssueType.id = OptionConfiguration.optionid'
                )
            )
        ),
        'conditions' => array(
            'ConfigurationContext.project' => 10000
        ),
        'fields' => array(
            'IssueType.id',
            'IssueType.pname'
        )
    ));
    

    我没有尝试输入“LEFT OUTER JOIN”,但我不明白为什么它不起作用,如果可以的话,可以考虑使用可包含以避免使用连接。

    【讨论】:

    • LEFT OUTER JOINLEFT JOIN 相等,在 CakePHP 中只需指定 LEFT 作为类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多