Я работаю над приложением CakePHP для доставки грузов, и я нашел обходной путь к моей проблеме, но я все еще не понимаю, в чем проблема.
Это модель моей страны
class Country extends AppModel {
public $recursive = 1;
public $hasMany = array(
'Port' => array(
'className' => 'Ports'
)
);
}
Этот код работает. Но следующее не делает.
//Broken example #1
class Country extends AppModel {
public $recursive = 1;
public $hasMany = 'Port';
}
И это тоже.
//Broken example #2
class Country extends AppModel {
public $recursive = 1;
public $hasMany = 'Ports';
}
моя таблица базы данных ports
, Моя модель Port
и мой контроллер PortsController
,
Документация о торте заставила бы меня поверить, что я должен использовать единственное имя для hasMany
отношения. И использование единственного имени работает для belongsTo
отношения в другом месте в моей программе.
Трудно получить отладочную информацию, потому что все запросы являются ajax, но насколько я вижу, запросы ничем не отличаются.
Используя рабочий код, мои запросы:
SELECT `Country`.`id`, `Country`.`name` FROM `db`.`countries` AS `Country` WHERE 1 = 1
SELECT `Port`.`id`, `Port`.`country_id`, `Port`.`name` FROM `db`.`ports` AS `Port` WHERE `Port`.`country_id` IN (1, 3, 2)
Используя неработающий пример № 1, я получаю следующие запросы:
SELECT `Country`.`id`, `Country`.`name` FROM `db`.`countries` AS `Country` WHERE 1 = 1
SELECT `Port`.`id`, `Port`.`country_id`, `Port`.`name` FROM `db`.`ports` AS `Port` WHERE `Port`.`country_id` IN (1, 3, 2)
Так почему же эта модель ведет себя так странно?
Изменить: Добавление модели порта
class Port extends AppModel {
public $belongsTo = array('Country', 'Customer');
}
Задача ещё не решена.
Других решений пока нет …