2015-09-27 36 views
3

我在我的預訂模型中有一列存儲datetime爲reservation_datetime,但是在我的表單中,我將它分成了兩個單獨的字段(日期&時間html5輸入)。在Laravel中使用mutator填充列

我創建了一個setter mutator來存儲從兩個輸入派生的日期,但插入記錄時沒有任何內容保存到reservation_datetime列中。

這是我的突變

public function setReservationDatetimeAttribute($value) 
{ 
    return $this->attributes['reservation_datetime'] = $this->date . " " . $this->time; 
} 

我注意到,如果我把僞投入我的$fillable陣列(reservation_datetime已經存在),那麼我能夠增變設置爲正確的值,但這會導致ORM試圖保存datetime列的其他問題,這些列明顯不存在,導致保存時出錯。

+2

Mutators對此是錯誤的工具。在您的控制器中手動設置'reservation_datetime'。 –

+0

你能解釋爲什麼這不是正確的功能使用?我的理解是,這正是增肌者習慣做的事情。 – Imran

+0

Mutators將被用於其他方式。如果你的表單有一個你想要分成兩個的字段,或者簡單地改變一個屬性的值。將兩個屬性合併爲一個並不是什麼變體。 –

回答

2

Mutators對此是錯誤的工具。在您的控制器中手動設置reservation_datetime

Mutators是爲了反過來使用。例如,如果你的表單有一個你想要分成兩個的字段,或者簡單地改變一個屬性的值。

將兩個屬性組合成一個屬性根本不是什麼變體。