2014-07-05 84 views
0

我有一些默認情況下在MySQL中爲NULL的字段。例如,在下面的代碼片段中,名稱是必需的且不爲空,但是name_abbrev,email_general和description都是可以爲空的,並且在數據庫中默認設置爲NULL。但通過Laravel中的表格輸入數據大多數不起作用。如果我插入只有名稱的行,而其他所有內容都保留爲空白,則當然名稱是正確輸入的,並且爲email_general輸入NULL,但其他兩個可爲空的字段會發布空字符串而不是NULL。如果我通過更改名稱來更新行,則更新也會將email_general的NULL更改爲空字符串。如果我手動將數據庫行中可空字段的值從空字符串更改爲NULL,那麼當我更新行(仍將所有空字段留空)時,它會將所有NULL字段更改爲空字符串。我找不到任何我做錯的事。爲什麼它不會輸入NULL(除了在與其他編碼完全相同的一個字段中),以及爲什麼更新甚至將該字段更改爲空字符串?NULL默認值不一致,&更新將NULL更改爲空字符串Laravel4

控制器:

public function store() 
{ 
    $component = new Component; 
    $component->name = Input::get('name'); 
    $component->name_abbrev = Input::get('name_abbrev'); 
    $component->email_general = Input::get('email_general'); 
    $component->description = Input::get('description'); ... 
    $component->save(); 

    return Redirect::route('components.index'); 
} 

public function update($id) 
{ 
    $component = $this->component->find($id); 
    $component->name = Input::get('name'); 
    $component->name_abbrev = Input::get('name_abbrev'); 
    $component->email_general = Input::get('email_general'); 
    $component->description = Input::get('description'); ... 
    $component->save(); 

    return Redirect::route('components.index'); 
} 

create.blade.php:

{{ Form::open(['route' => 'components.store']) }} 
    <div class="required"> 
     {{ Form::label('name','Name:') }} 
     {{ Form::text('name') }} 
     {{ $errors->first('name') }} 
    </div>  

    <div> 
     {{ Form::label('name_abbrev','Abbreviation:') }} 
     {{ Form::text('name_abbrev', NULL) }} 
    </div> 

    <div> 
     {{ Form::label('email','General Email:') }} 
     {{ Form::text('email',NULL) }} 
    </div> 

    <div> 
     {{ Form::label('description','Description:') }} 
     {{ Form::textarea('description',NULL,['size' => '26x3']) }} 
    </div> ... 

    <div> 
     {{ Form::submit('Add New Component', array('class'=>'button')) }} 
    </div> 

{{ Form::close() }} 

edit.blade.php:

{{ Form::model($component, array('method'=>'put','route'=>array('components.update', $component->id))) }} 

    <div class="required"> 
     {{ Form::label('name','Name:') }} 
     {{ Form::text('name') }} 
     {{ $errors->first('name') }} 
    </div>  

    <div> 
     {{ Form::label('name_abbrev','Abbreviation:') }} 
     {{ Form::text('name_abbrev', NULL) }} 
    </div> 

    <div> 
     {{ Form::label('email_general','General Email:') }} 
     {{ Form::text('email_general', NULL) }} 
    </div 

    <div> 
     {{ Form::label('description','Description:') }} 
     {{ Form::textarea('description',NULL,['size' => '26x3']) }} 
    </div> ... 

    <div> 
     {{ Form::submit('Update Component', array('class'=>'button')) }} 
    </div> 

{{ Form::close() }} 

非常感謝!這應該很容易,但由於某種原因,事實並非如此。

回答