2

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フィクスチャデータの理解は最小限であることを認めます(ドキュメントは少し不足しており、Web上の例はすべてやや些細な例を再ハッシュしています)、私ができる/すべきことについてのアイデアはありますか?

4

1 に答える 1

3

Debuggableの善良な人々によるFixturizeシェルを見てください。データベースにデータが入ったら、このシェルを使用してデータをフィクスチャに自動的に抽出できます。非常に多くの頭痛を救います。

あなたと同じように、フィクスチャに関する私の知識は限られていますが、データベースに何かをしっかりと入れて、それをフィクスチャに抽出するだけで、この種の苦痛を回避できると思います。

于 2009-06-04T16:23:37.850 に答える