2017-02-09 73 views
0

我們使用一個laravel應用程序爲我們的服務器網站寧靜的應用程序。我們有一個MySql數據庫來存儲我們的數據。要訪問數據,我們使用laravel模型。有時我們可能需要創建自定義屬性或使用訪問器和增變器來操作屬性。 這是事情。有時我們需要使用來自多個屬性的訪問器來計算數據。例如,如果表中包含一個名爲DUE_DATE領域,我們想定義自定義屬性表明,如果到期日期已過與否,我們使用自定義的屬性如下所示:何時laravel模型屬性數組被填充?

protected $appends = array('is_late'); 

public function getIsLateAttribute() 
{ 
    return (Carbon::now() > Carbon::parse($this->attributes['due_date'])); 
} 

我的問題是:是否可以保證在我們得到due_date屬性的時候屬性數組將被填充?當模型的生命週期中填充屬性時?如果我們需要訪問現有數據庫字段的訪問者的屬性,那麼使用它也是安全的嗎?

謝謝。

+0

可能回答你的問題http://stackoverflow.com/questions/18398489/laravel-performing-some-task-on-every-insert-update-when-using-query-builder-or –

+0

我調查了一下,我不認爲它與我所問的有關。無論如何,謝謝你。 :) –

回答

0

$ attributes當從數據庫加載模型時,屬性填充模型數據。所以當你訪問一個模型對象的時候,所有的屬性都已經設置好了。在列出

屬性$追加變量,在另一方面,當現有的模型被轉換成一個陣列被追加,所以可以安全地假設$屬性已經由接盤。