كيف يمكنني التعامل مع العلاقات الرئيسية الأجنبية في المباريات الخاصة بي للاختبار الوحدة مع Simpletest in CakePhp؟

StackOverflow https://stackoverflow.com/questions/951165

سؤال

أحاول إنشاء بعض بيانات لاعبا اساسيا للاختبارات الخاصة بالوحدة في 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')
    );
}
?>

لذلك، كما يمكنك تخمين التخصص لديه مفتاح أجنبي لحدث (يشبه نموذج الحدث الخاص بي):

<?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 ضئيلة (وثائق كيندا نادرة، وأمثلة على شبكة الويب جميعها إعادة إظهار أمثلة تافهة إلى حد ما) لذا فإن أي أفكار حول ما يمكنني القيام به؟

هل كانت مفيدة؟

المحلول

نلقي نظرة على Fixturize Shell. من قبل الناس الجيدين في الطائف. بمجرد حصولك على بيانات في قاعدة البيانات الخاصة بك، يمكنك استخدام هذه الشل لاستخراجها إلى تركيبات تلقائيا. يحفظ الكثير فظيعة من الصداع.

مثلك، معرفتي للتركيبات محدودة، لكنني أعتقد أنك ستتمكن من تجنب هذا النوع من الألم من خلال الحصول على شيء صلب في قاعدة البيانات الخاصة بك وإخراج ذلك فقط لتركيبات التثبيتات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top