2016-11-23 102 views
0

無可空這是我的移民:laravel空列更改爲外鍵

 $table->increments('id'); 
     $table->string('nombre1',255); 
     $table->string('nombre2',255)->nullable(); 
     $table->string('apellido1',255)->nullable(); 
     $table->string('apellido2',255)->nullable(); 
     $table->string('apellido_casada',255)->nullable(); 
     $table->string('cedula',255)->nullable(); 
     $table->integer('entidad_id')->nulleable()->unsigned(); 
     **$table->integer('cargo_id')->nulleable()->unsigned(); 
     $table->integer('partido_id')->nulleable()->unsigned(); 
     $table->integer('provincia_id')->nulleable()->unsigned(); 
     $table->integer('distrito_id')->nulleable()->unsigned(); 
     $table->integer('corregimiento_id')->nulleable()->unsigned();** 
     $table->string('otro_nombre',255)->nullable(); 
     $table->dateTime('fecha_nacimiento')->nullable(); 
     $table->timestamps(); 
     $table->softDeletes(); 
     $table->foreign('entidad_id')->references('id')->on('entidad'); 
     $table->foreign('cargo_id')->references('id')->on('cargo'); 
     $table->foreign('partido_id')->references('id')->on('partido'); 
     $table->foreign('provincia_id')->references('id')->on('provincia'); 
     $table->foreign('distrito_id')->references('id')->on('distrito'); 
     $table->foreign('corregimiento_id')->references('id')->on('corregimiento'); 

當我運行此遷移表產生的是:

CREATE TABLE pep (
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    nombre1 VARCHAR(255) COLLATE UTF8_UNICODE_CI NOT NULL, 
    nombre2 VARCHAR(255) COLLATE UTF8_UNICODE_CI DEFAULT NULL, 
    apellido1 VARCHAR(255) COLLATE UTF8_UNICODE_CI DEFAULT NULL, 
    apellido2 VARCHAR(255) COLLATE UTF8_UNICODE_CI DEFAULT NULL, 
    apellido_casada VARCHAR(255) COLLATE UTF8_UNICODE_CI DEFAULT NULL, 
    cedula VARCHAR(255) COLLATE UTF8_UNICODE_CI DEFAULT NULL, 
    **entidad_id INT(10) UNSIGNED NOT NULL, 
    cargo_id INT(10) UNSIGNED NOT NULL, 
    partido_id INT(10) UNSIGNED NOT NULL, 
    provincia_id INT(10) UNSIGNED NOT NULL, 
    distrito_id INT(10) UNSIGNED NOT NULL, 
    corregimiento_id INT(10) UNSIGNED NOT NULL,** 
    otro_nombre VARCHAR(255) COLLATE UTF8_UNICODE_CI DEFAULT NULL, 
    fecha_nacimiento DATETIME DEFAULT NULL, 
    created_at TIMESTAMP NULL DEFAULT NULL, 
    updated_at TIMESTAMP NULL DEFAULT NULL, 
    deleted_at TIMESTAMP NULL DEFAULT NULL, 
    PRIMARY KEY (id), 
    KEY pep_entidad_id_foreign (entidad_id), 
    KEY pep_cargo_id_foreign (cargo_id), 
    KEY pep_partido_id_foreign (partido_id), 
    KEY pep_provincia_id_foreign (provincia_id), 
    KEY pep_distrito_id_foreign (distrito_id), 
    KEY pep_corregimiento_id_foreign (corregimiento_id), 
    CONSTRAINT pep_cargo_id_foreign FOREIGN KEY (cargo_id) 
     REFERENCES cargo (id), 
    CONSTRAINT pep_corregimiento_id_foreign FOREIGN KEY (corregimiento_id) 
     REFERENCES corregimiento (id), 
    CONSTRAINT pep_distrito_id_foreign FOREIGN KEY (distrito_id) 
     REFERENCES distrito (id), 
    CONSTRAINT pep_entidad_id_foreign FOREIGN KEY (entidad_id) 
     REFERENCES entidad (id), 
    CONSTRAINT pep_partido_id_foreign FOREIGN KEY (partido_id) 
     REFERENCES partido (id), 
    CONSTRAINT pep_provincia_id_foreign FOREIGN KEY (provincia_id) 
     REFERENCES provincia (id) 
) ENGINE=INNODB DEFAULT CHARSET=UTF8 COLLATE = UTF8_UNICODE_CI; 

的問題是,某些列:entidad_id,cargo_id等,聲明爲NULL,當我設置FK時,laravel將它們創建爲NOT NULL。

這裏是點兒,我很想念?

回答

1

對不起,我遲到了。

你必須在代碼中錯別字

nulleable

$table->integer('entidad_id')->nulleable()->unsigned();

應該

nullable

$table->integer('entidad_id')->nullable()->unsigned();

不知道爲什麼Laravel不會在拼寫錯誤上大喊:(