2017-10-13 46 views
0

當保存我的表單時,它會正確保存所有內容,但如果表單中的值爲空白,則即使該列設置爲允許空值,它也將無法保存。保存模型時,MySQL/Laravel處理空值

因此,讓它工作的唯一方法似乎是檢查值是否存在,否則手動將其設置爲空(見下文)。

$model = \Blah\Model::where(blahblah)->first; 
$model->value = $value ? $value : null; 
$model->save(); 

我不得不這樣做雖然也只是因爲如果值爲0(零),將它設置爲null,因爲PHP的方式解釋條件語句的問題。

我不想爲每個模型中的每個值都做這件事。那麼是否有辦法使它正確處理空值,以便如果該字段爲空,則會將空值保存到該列的模型中,而不是給我一個錯誤?

所以基本上有一種方法來正確處理SQL/Eloquent中的空值,將保持0值,如果它是空白,正確保存空值?

編輯:生成的查詢

General error: 1366 Incorrect integer value: '' for column 'Strength' at row 1 (SQL: update `playerstats` set `Strength` = where `id` = 1) 
+1

@ccloyed提laravel版本好嗎? –

+1

如果保存失敗,日誌文件中的錯誤消息是什麼?並請展示您的模型! – Webdesigner

+0

請提供生成的SQL。 –

回答

0

下面的代碼,您應該使用:

$model = \Blah\Model::where(blahblah)->first; 

if($modal->value == "0") { 
    $model->value = 0; 
} 
else{ 
    $model->value = NULL; 
} 
$model->save(); 
+0

是的,我可以做到這一點。但主要的問題是我不想在if語句中包含所有的值,因爲隨着頁面的增長它將超過100列。我寧願弄清楚如何讓數據庫實體正確地將零解釋爲零,將(NULLstr)解釋爲空。 – cclloyd

+0

@cclloyd:嘗試將您的列數據類型更改爲「VARCHAR」。 –

0

讓您的手機型號nullable

value列,並使用$model->value = isset($value) ? $value : null;