2009-06-04 6 views
2

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

<?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') 
    ); 
} 
?> 

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

<?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 арматуре минимален (документация своего рода мало, и примеры в Интернете всего перепев несколько тривиальные примеры), поэтому любые идеи о том, что я могу/должен делать?

ответ

3

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

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

+0

Ух! Это именно то, что я искал (я бы скорее извлек данные для светильников). Спасибо! – leo