سؤال

لدي مشكلة مع مخطط Drupal 7 للوحدة النمطية. هناك 4 جداول ولكن للعينة 2 ستكون كافية:

function mymodule_schema() {
$schema['series'] = array(
    'fields' => array(
        'id' => array(
            'type' => 'serial',
            'unsigned' => true,
            'not null' => true,
        ),
        'name' => array(
            'type' => 'varchar',
            'length' => 255,
            'not null' => true,
        ),
    ),
    'unique keys' => array(
        'name' => array('name'),
    ),
    'primary key' => array('id'),
);

$schema['sermon'] = array(
    'fields' => array(
        'id' => array(
            'type' => 'serial',
            'unsigned' => true,
            'not null' => true,
        ),
        'title' => array(
            'type' => 'varchar',
            'length' => 255,
            'not null' => true,
        ),
        'series_id' => array(
            'type' => 'int',
        ),
    ),
    'foreign keys' => array(
        'series_id' => array(
            'table' => 'series',
            'columns' => array('series_id' => 'id'),
        ),
    ),
    'primary key' => array('id'),
);
return $schema;
}

هذا الرمز ينشئ جداول ولكن ليس مفاتيح أجنبية. مثال للتنفيذ أحصل عليه من drupal.org: http://drupal.org/node/146939

إصدار Drupal هو 7.0-Beta 3 .. كما هو: ربما ، لم يتم تنفيذه بعد ، لا أراه في node الجدول (مثال الوثائق ، نقطة إلى التعليمات البرمجية من المثبت).

شكرا لمساعدتك.

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

المحلول

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

ربما يكون العمل هو تشغيل SQL المضافة إلى المفتاح الأجنبي في hook_init (أو واحدة من أساليب API الأخرى). آسف ، لا يبدو أن هناك حل أفضل لهذا الآن.

نصائح أخرى

لديك الفكرة الصحيحة ، لم يتم تنفيذ هذا بعد:/

ليس لدي أي فكرة لماذا لا يذكرون ذلك بشكل بارز ، ولكن على ما يبدو ، فإن إعلانات المفتاح الخارجي هي لأغراض الوثائق فقط في الوقت الحالي (والاستعداد لفعل شيء مفيد معهم لاحقًا ، قد يأمل أحدهم على الأقل).

يرى هذا التعليق وأقل على (غير المسمى) "أضف مفاتيح أجنبية إلى الأساسية" مسلك.

هذا منشور قديم جدًا ، لكن للرجوع إليه ، يمكن أن يساعد هذا

'foreign keys' => array(
    'series_id' => array(
        'table' => 'series',
        'columns' => array('id' => 'series_id'),
    ),
),
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top