【问题标题】:Access related models/tables to inner join query in cakephp访问相关模型/表以在 cakephp 中进行内部连接查询
【发布时间】:2014-06-19 07:05:10
【问题描述】:

我在一个名为 Application 的分页模型中有这个 inner join 查询

Application 有很多AssignedExploration

AssignedExploration 属于Exploration

Exploration 属于ExplorationCategory

ExplorationCategory 属于Season

到目前为止我的查询是:

$session_condition = array(
    'table' => 'assigned_explorations',
    'alias' => 'AssignedExploration',
    'type' => 'INNER',
    'conditions' => array(
        'AssignedExploration.application_id = Application.id',
        'OR' => array(
            array('AssignedExploration.label' => $this->request->named['filter_session'])
        )
    )
);

我想在OR 中添加另一个查询,它会得到applications,它有一个Season.name = fall

我已经尝试添加array('Season.name' => 'fall')

$session_condition = array(
    'table' => 'assigned_explorations',
    'alias' => 'AssignedExploration',
    'type' => 'INNER',
    'conditions' => array(
        'AssignedExploration.application_id = Application.id',
        'OR' => array(
            array('AssignedExploration.label' => $this->request->named['filter_session']),
            array('Season.name' => 'fall')
        )
    )
);

但没有运气。 AssignedExploration似乎无法识别Season。

我想从AssignedExploration 嵌套到ExplorationExplorationCategorySeason

而且我不知道如何通过 cakephp 查询 inner join

提前致谢。

编辑:截至目前的查询:

INNER JOIN 
    `ntc_development`.`assigned_explorations` AS `AssignedExploration` ON ( 
        `AssignedExploration`.`application_id` = `Application`.`id` 
         AND 
         `AssignedExploration`.`label` = 'fall'
     )

【问题讨论】:

  • 你能写出整个查询吗?你必须使用两个内连接和外连接使用条件
  • INNER JOIN ntc_development.assigned_explorations` AS AssignedExploration ON (AssignedExploration.application_id = Application.id AND AssignedExploration.AssignedExploration ='fall'86 )` 但这只是我现在的条件。我想嵌套到 Season 以添加另一个条件,谢谢
  • 这个问题似乎不完整您正在尝试将条件应用于季节模型,但问题的代码中的任何地方都没有提到它。 $season_condition 的使用方式也不明显

标签: php mysql sql cakephp


【解决方案1】:
$this->paginate['Application'] = array(
                'recursive' => -1,
                'joins' => array(
                    array(
                        'table' => 'assigned_explorations',
                        'alias' => 'AssignedExploration',
                        'type' => 'inner',
                        'foreignKey' => true,
                        'conditions' => array('AssignedExploration.application_id = Application.id')
                    ),
                    array(
                        'table' => 'seasons',
                        'alias' => 'Season',
                        'type' => 'inner',
                        'foreignKey' => true,
                        'conditions' => array('Season.id = Application.season_id') # whats your foregin key
                    ),                                         
                ),
                'fields' => array(),
                'conditions' => array('Season.name' => 'fail'),
            );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    相关资源
    最近更新 更多