3

모듈의 Drupal 7 스키마에 문제가 있습니다. 4 개의 표가 있지만 표본 2의 경우 충분합니다.Drupal 7 스키마의 외래 키

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

드루팔 버전 7.0 베타 3 ..As 생각 : 아마, 아직 구현되지 않은, 내가 node 테이블에 표시되지 않습니다 (문서의 예를 들어 포인트를 설치 프로그램에서 코드 작성).

도움 주셔서 감사합니다. 그들은 눈에 띄게이를 명시하지 않지만, 분명히, 외래 키 선언은 단지 순간에 문서를 목적으로하는 이유/

나는 아무 생각이 없다 (그리고 : 당신이 올바른 생각을 가지고

+0

도움을 줄 수 있습니다. sermon.id를'sermon_id'로 변경하고 series.id를'series_id' 또는 다른 것으로 변경할 수 있습니다. 이제 날 호기심에 사로 잡혔다. :) –

+0

zourtney, 어제 (지금은 나를위한 밤이야),하지만 문제가 (이상한, 테이블 + fieldname이 충분해야하고 원시 SQL 문이 올바른 일을하더라도) 어제 시도해 보겠습니다.이 이름에 대한 해결책이 필요합니다. 스키마가 제 3 자에 의해 제공되고 프로덕션 환경에서 스키마를 변경할 수 없기 때문입니다. – lifecoder

+0

좋아, 그 생각 잊어; 나는 이것이 실제로 그것을 Drupal로 구현하지 않았다고 생각한다. 나는 아래에 게시물을 만들었습니다. 나는이 문제에 대해 어느 정도 전까지 만난다는 것을 기억한다. 나는 "해결책"을 잘못 기억 한 것처럼 보일 것입니다. –

답변

5

불과 몇 달 전에 this post에 따르면 hook_schema 함수는 외래 키 작성을 구현하지 않습니다. 그러나 기존의 것을 참조 할 수 있습니다.

hook_init (또는 다른 API 메소드 중 하나)에서 외래 키를 추가하는 SQL을 실행하는 것이 좋습니다. 죄송합니다. 지금은 이보다 나은 해결책이없는 것 같습니다.

2

이 아직 구현되지 않았다 나중에 그들과 함께 유용한 것을하기위한 준비, 적어도 하나는 그렇게 희망한다).

(이름이 잘못 지정된) 'add foreign keys to core' 스레드의 this comment and below을 참조하십시오.

0

이 아주 오래된 포스트이지만, 참조 할 수 있도록이 내가 생각할 수있는 유일한 것은 아마도`id` 고유 쿼리에서 식별 할 수없는 것입니다

'foreign keys' => array(
    'series_id' => array(
     'table' => 'series', 
     'columns' => array('id' => 'series_id'), 
    ), 
),