Комплект тестов CakePHP: таблицы импортных креплений для HABTM - PullRequest
3 голосов
/ 31 марта 2011

У меня есть модель Post -> hasAndBelongsToMany -> Tag

Для тестирования я создал приборы для каждой модели, например, приспособление для модели Пост выглядит так:

class PostFixture extends CakeTestFixture {
    var $import = array('model' => 'Post', 'records' => true, 'connection' => 'fixtures');
}

и всеотлично работает для этой модели, но когда я пытаюсь создать фиксатор для отношения HABTM, использование того же подхода не работает:

class PostsTagFixture extends CakeTestFixture {
    var $import = array('model' => 'PostTag', 'records' => true, 'connection' => 'fixtures');
}

SQL, генерируемый CakePHP, выглядит следующим образом

CREATE TABLE `service_types_technicals` (
    `technical_id` int(20) NOT NULL AUTO_INCREMENT,
    `service_type_id` int(20) NOT NULL AUTO_INCREMENT,
    `id` varchar(255) NOT NULL, PRIMARY KEY  (`id`))    ;

Что неверно, потому что в таблице нет поля с именем id.

Затем я попытался это сделать:

class PostsTagFixture extends CakeTestFixture {
    var $name = 'PostsTag';
    var $import = array('table' => 'posts_tags', 'records' => true, 'connection' => 'fixtures');
}

И снова ошибка, но на этот раз SQLбыло:

CREATE TABLE `service_types_technicals` (
    `technical_id` int(20) NOT NULL AUTO_INCREMENT,
    `service_type_id` int(20) NOT NULL AUTO_INCREMENT,  PRIMARY KEY  (`service_type_id`))   ;

Что я делаю не так?Как правильно импортировать приборы из другой базы данных для has and belongs to many отношений?

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 мая 2011

Проблема заключалась в отсутствии идентификатора поля в таблице отношений habtm, теперь она исправлена ​​

1 голос
/ 07 апреля 2011

Мауро Задунайский,

когда вы утверждаете, что service_types_technicals не имеет поля id, я предполагаю, что CakePHP автоматически выводит HABTM из service_types к техническому, поскольку оба являются существительными, написанными во множественном числе (соглашение CakePHP). Если это не то, что вы имели в виду, то вы вынуждены изменить название таблицы, чтобы не нарушать соглашения.

...