مفاتيح أجنبية في Drupal 7 مخطط مشكلة
-
26-09-2019 - |
سؤال
لدي مشكلة مع مخطط 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'),
),
),