3

モジュールのDrupal7スキーマに問題があります。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-beta3です..アイデアとして:多分、まだ実装されていないので、node表には表示されません(ドキュメントの例はインストーラーからのコードを指しています)。

お手伝いありがとうございます。

4

3 に答える 3

5

この投稿によると、ほんの数か月前、このhook_schema関数は外部キーの作成を実装していません。ただし、既存のものを参照することはできます。

おそらく回避策は、外部キーを追加するSQL hook_init(または他のAPIメソッドの1つ)を実行することです。申し訳ありませんが、現在、これに対するより良い解決策はないようです。

于 2010-11-19T21:15:14.027 に答える
2

あなたは正しい考えを持っています、これはまだ実装されていません:/

彼らがこれを目立つように述べていない理由はわかりませんが、明らかに、外部キーの宣言は現時点では文書化のみを目的としています (そして、後でそれらを使って何か役に立つことをするための準備です。少なくとも 1 つはそう願っています)。

(誤った名前の)「外部キーをコアに追加する」スレッドに関するこのコメントと以下を参照してください。

于 2010-11-19T21:12:13.943 に答える
0

これは非常に古い投稿ですが、参考のためにこれが役立ちます

'foreign keys' => array(
    'series_id' => array(
        'table' => 'series',
        'columns' => array('id' => 'series_id'),
    ),
),
于 2016-11-07T12:36:35.107 に答える