2015-08-15 76 views
1

可空,我已把Laravel:如何檢查,如果模型領域是數據庫

時,使用OctoberCMS模型事件beforeSave(相當於Laravel模型保存)

public function beforeSave() 
{ 
    // $this => the model 
    foreach ($this->toArray() as $name => $value) 
    { 
     if (empty($value)) { 
       $this->{$name} = null; 
     } 
    } 
} 

問題將所有空字段null是當場對數據庫(MySQL的)中所定義的默認值,例如:

$table->integer('value')->default(1); 

我需要得到所有可爲空的或不可爲空FIE的陣列當前模型的ID。

這是怎麼回事?

回答

3

Laravel/Eloquent對您的數據庫結構沒有任何線索。假設無論您執行什麼操作,數據庫結構都可以爲他們做好準備。

您可以查詢數據庫以獲取有關列的信息。對於MySQL的你需要運行

show columns from <table_name>; 

這將導致發送到數據庫其他查詢

A 更好的選項,在我看來,只是將這些信息存儲在模型類中,例如,在

protected $notNullable = ['field1', 'field2']; 
以類似的方式

$可填寫$把守字段存儲。當你編寫模型時,你應該知道哪些列是nullable,哪些不是,所以它應該是最簡單的解決方案。

+0

親愛的選民,請留下評論,我很想知道答案有什麼問題:) –

+0

哦對不起。解決我只是設置'protected $ notNullables = ['foo','bar']'並在循環內創建條件。工作很好。 –