2017-10-23 7 views
0

내 Laravel 마이그레이션은 다음과 같습니다 : SQL에서Laravel/Lumen 마이그레이션 : 영구 대문자 열을 만드는 방법은 무엇입니까?

class CreateTableLanguage extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('language', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->timestamps(); 
      $table->char('iso639_1',2)->unique()->comment('http://www.loc.gov/standards/iso639-2/php/code_list.php'); 
      $table->char('locale',2)->uppercase(); // DUMMY uppercase(), does not work 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::dropIfExists('language'); 
    } 
} 

나는이 문을 대문자하기 위해 열 '내용을 강제 할 수 :

UPDATE 
    MyTable 
SET 
    MyColumn = UPPER(MyColumn) 

가 어떻게 내 Laravel 마이그레이션 클래스에 대문자를 적용 할 수 있는가? 당신이 내용을 강제 할 수 Laravel에서

답변

2

는 Laravel하여 해당 필드를 수정하려고 할 때, 대문자의 값을 저장할하는 Mutator

public function setLocaleAttribute($value) 
{ 
    $this->attributes['locale'] = strtoupper($value); 
} 

으로도이 방법을 대문자 할

$language->locale = 'es'; // this will be 'ES' 
$language->save(); 

해당 동작을 보완하기 위해 다른 사람이 수동으로 또는 사용자 지정 코드를 사용하여 레코드를 추가 한 경우 항상 값을 대문자로 유지하려면 접근자를 만들 수 있습니다.

public function getLocaleAttribute($value) 
{ 
    return strtoupper($value); 
} 
+0

Yepp는이 중 하나를 수행하거나 트리거를 작성해야한다고 생각합니다. – Blackbam