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