CakePHP вставляет «LEFT JOIN» (упоминание полей в связанной модели) в мои попытки обновления - PullRequest
1 голос
/ 18 июля 2010

Это сводит меня с ума, я пытаюсь сделать что-то вроде:

$this->data = $this->Prox->read('proxy',$currentgetdata); 
                    $this->data['Prox']['checked'] = 2;
                    $this->Prox->save();

, где у меня есть ассоциация моделей:

class Prox extends AppModel {
    var $name = 'Prox';
    var $primaryKey = 'id';
    ######## Define Model Associations #########
    var $belongsTo = array('Proxylink' => array('className' => 'Proxylink'));
}

Но я получаю ошибку:

SELECT `Prox`.`proxy` FROM `proxes` AS `Prox` LEFT JOIN `proxylinks` AS `Proxylink` ON (`Prox`.`proxylink_id` = `Proxylink`.`id`) WHERE `Prox`.`id` = '58.22.101.239:808' LIMIT 1

1054: Unknown column 'Prox.proxylink_id' in 'on clause'

Я не понимаю, почему это помещает это в запрос "LEFT JOIN proxylinks AS Proxylink ON (Prox. proxylink_id = Proxylink. id)"и я не смог найти никакой документации о том, почему он это делает, как будто он ДОЛЖЕН попытаться включить несуществующий гибрид поля из моей связанной модели и моей текущей модели в каждый запрос, что я нахожу чрезвычайно странным.Любой совет, что я могу сделать, чтобы мои запросы сохранения / обновления работали.

1 Ответ

2 голосов
/ 18 июля 2010

Если у вас есть отношение к , ваша таблица 'prox' должна иметь поле 'proxylink_id'.

Если вы не хотите, чтобы ассоциативные модели были объединены, вы должны установить опцию ' recursive ' на -1.

...