2016-07-13 43 views
11

Taşıma sırasında varsayılan olarak 1 değerine ayarlamak için enabled alanını değiştiriyorum. down() yöntemdekaldırma Varsayılan olarak geçiş mi?

public function up() 
{ 
    Schema::table('client', function (Blueprint $table) { 
     $table->boolean('enabled')->default(1)->change(); 
    }); 
} 

- nasıl default() kaldırırım? Biliyorum default(0) yapabilir, ancak oluşturma tablosu sırasında hiçbir zaman varsayılan oluşturmadı.

+0

Hiçbir şey ortaya çıkmazsa, 'down()' yönteminize bir Ham Sorgu yazmayı deneyin. –

+0

'$ table-> boole ('etkin') 'i deneyin -> change();'! –

cevap

3

Bu ifadeyi Laravel işlevleri ile kaldırmanın bir yolu olmadığından, aşağı işlevinizin ifadeyi ham olarak yürütmesi gerekir. Aşağıdaki gibi bir şey olmalı: ->default(NULL) bir tablodan varsayılan değeri kaldırır, Hayret ya da değil

use Illuminate\Support\Facades\DB; 
+0

Sınıf adı zaten "DB" olduğundan, "DB" takma adı olmadan yeterli olmalıdır. – srph

+0

@srph Haklısınız. Düzenlenen. Teşekkür ederim. –

13

: Bu göç yürütmek amacıyla

public function down() 
    { 
    Schema::table('client', function ($table) { 
     DB::statement('ALTER TABLE' . $table . 'ALTER COLUMN enabled DROP DEFAULT'); 
    }); 
    } 

, kendi göç üstündeki incluide gerekir:

public function up() 
{ 
    Schema::table('client', function (Blueprint $table) { 
     $table->boolean('enabled')->default(NULL)->change(); 
    }); 
} 

Sadece laravel bir diffarasındaki yapar, çünkü çalışmıyor default çağrısı atlayarak 210 ve current state + specified changes. Hiçbir değişiklik belirtilmemiş, fark yoktur. Bundan sonra

, doctrine varsayılan değer not being specified olarak NULL value tedavi, ALTER TABLE statement (özellikle, elde edilen kolon beyan) oluşturur.

+0

Bir yan not: Laravel geçişleri bazı sütun türlerindeki değişiklikleri desteklemez. Sadece 'tinyInteger' sütununu değiştirmeye çalıştım ve işe yaramadı. Detaylar için https://laravel.com/docs/5.4/migrations#modifying-columns adresini ziyaret edin. –

+0

Eğer '-> varsayılan (null)' varsayılan değer olarak 'NULL' 've '-> noDefault()' varsayılan değeri kaldıracaktır (' -> varsayılan (yanlış) 'diye düşündüğümde daha sezgisel olurdu. Postgres’te varsayılan olarak 'false'ı ayarla ...). – Wirone

İlgili konular