Доступ к связанным моделям / таблицам для запроса внутреннего соединения в cakephp

#php #mysql #sql #cakephp

#php #mysql #sql #cakephp

Вопрос:

У меня есть этот inner join запрос в разбитой на страницы модели, который называется Application

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')
        )
    )
);
  

Но не повезло. Похоже, что Season не распознается AssignedExploration .

Я хотел бы вложить from AssignedExploration в Exploration to ExplorationCategory и в Season

И я не имею ни малейшего представления о том, как сделать это через inner join запрос через cakephp.

Заранее спасибо.

РЕДАКТИРОВАТЬ: запрос на данный момент:

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

Комментарии:

1. можете ли вы написать весь запрос? вы должны использовать два внутренних соединения и использовать условия вне соединения

2. INNER JOIN ntc_development . назначил_explorations` КАК AssignedExploration ON ( AssignedExploration . application_id = Application . id И AssignedExploration . label = ‘fall’)` но это только то условие, которое у меня есть прямо сейчас. Я хотел бы вложить в Season, чтобы добавить еще одно условие, спасибо

3. Этот вопрос кажется неполным, вы пытаетесь применить условия к модели season, но это нигде не упоминается в коде в вопросе. Также не очевидно, как $season_condition используется

Ответ №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'),
            );