Как мне обрабатывать отношения внешних ключей в моих приборах для модульного тестирования с SimpleTest в CakePHP? - PullRequest
2 голосов
/ 04 июня 2009

Я пытаюсь создать некоторые данные о приборах для своих модульных тестов в CakePHP (через SimpleTest), и я не знаю, как обрабатывать отношения с внешним ключом. Вот пример кода прибора:

<?php
class SpecialtyFixture extends CakeTestFixture {
    var $name = "Specialty";
    var $import = "Specialty";

    var $records = array(
            array(
               'id' => '1', 
               'event_id' => '1', 
               'code' => 'endocrin-1', 
               'name' => 'Endocrinology'),
            array(
               'id' => '2', 
               'event_id' => '1', 
               'code' => 'ent-1', 
               'name' => 'Ear, Nose and Throat')
    );
}
?>

Итак, как вы можете догадаться, Specialty имеет внешний ключ к событию (моя модель Event выглядит следующим образом):

<?php
class Event extends AppModel {
    var $name = "Event";
    var $primaryKey = "id";

    var $hasMany = array(
            'EventLocation' => array('className' => 'EventLocation'),
            'Faculty' => array('className' => 'Faculty'),
            'Agenda' => array('className' => 'Agenda'),
            'Role' => array('className' => 'Role'),
            'Specialty' => array('className' => 'Specialty'),
    );

    var $hasAndBelongsToMany = array('User');
}
?>

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

Unexpected PHP error [<span style = "color:Red;text-align:left"><b>SQL Error:</b> 1054: Unknown column 'event_id' in 'field list'</span>] severity [E_USER_WARNING] in [/dev/trunk/cake/libs/model/datasources/dbo_source.php line 525] /dev/trunk/app/tests/cases/models/event.test.php -> EventTestCase -> endCase

Я признаю, что мое понимание данных о приборах CakePHP минимально (документации немного, и примеры в Интернете перефразируют несколько тривиальных примеров), так что есть какие-либо идеи относительно того, что я могу / должен сделать?

1 Ответ

3 голосов
/ 04 июня 2009

Взгляните на Fixturize shell от хороших людей в Debuggable. Когда у вас есть данные в вашей базе данных, вы можете использовать эту оболочку для автоматического извлечения их в данные. Сохраняет ужасную головную боль.

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

...