Это один из тех случаев, когда я знаю, что делаю что-то не так, но я, очевидно, глухой, тупой и слепой по отношению к этому.Я надеюсь, что другая пара глаз сможет открыть мои собственные.
У меня есть модель ZipCode
и модель Incentive
.Посередине находится прославленный соединительный стол (прославленный, потому что у него есть свой ключ).Таблица соединений имеет поля id
, incentive_id
и zip
(устаревшая база данных).Моя ZipCode
модель HABTM Incentive
как показано:
public $hasAndBelongsToMany = array(
'Incentive' => array(
'with' => 'ZipCodeIncentive',
'foreignKey' => 'zip',
'associationForeignKey' => 'incentive_id',
),
);
Моя Incentive
модель HABTM ZipCode
следующим образом:
public $hasAndBelongsToMany = array(
'ZipCode' => array(
'with' => 'ZipCodeIncentive',
'foreignKey' => 'incentive_id',
'associationForeignKey' => 'zip',
),
У меня есть метод, ZipCode::incentives( $zip )
который хочет использовать все стимулы, относящиеся к указанному почтовому индексу:
$incentives = $this->Incentive->find(
'all',
array(
'contain' => array( 'ZipCode' ),
'fields' => array( 'Incentive.id', 'Incentive.name', 'Incentive.it_name', 'Incentive.amount', 'Incentive.state', 'Incentive.entire_state', 'Incentive.excluded', 'Incentive.is_active' ),
'conditions' => array(
'Incentive.excluded' => 0,
'Incentive.is_active' => 1,
'OR' => array(
'Incentive.state' => 'US', # nationwide incentives
array(
# Incentives that apply to the entire state the zip code belongs to
'Incentive.entire_state' => 1,
'Incentive.state' => $state,
),
'ZipCode.zip' => $zip # specific to the building's zip code
)
),
'order' => array( 'Incentive.amount DESC' ),
)
);
Я получаю за свою проблему следующую ошибку:
SQL Error: 1054: Unknown column 'ZipCode.zip' in 'where clause'
Таблица модели ZipCode
не включается в SQL, но я еще не понял почему .Стоит отметить, что модель Incentive
связана с MySql представлением , а не с таблицей, через $useTable
.Я не видел ничего, что указывало бы на то, что это должно быть проблемой в этом сценарии, но это нестандартно.
Если вы видите, что мне не хватает, пожалуйста, позвоните 911 или хотя бы напишите ответ.