Eloquent CRUD:save

更新一個entity,就跟儲存一個新entity一樣,需要使用save方法:

背後發生了什麼事呢?讓我們一一來看。

在前一篇Eloquent CRUD:find我們看到了Eloquent\Model大量運用到Eloquent\Builder和Query\Builder類別。
newQueryWithoutScopes從命名可猜想是在製作Query\Builder實體。
我們把重點放在performUpdate和performInsert吧

首先利用getDirty得知哪些屬性被更動過、需要更新:

看起來是在比較attributes跟original陣列的內容,但是我們設定value時並沒有碰到它們呀?

我們並不是

getDirty怎麼會比較那兩個陣列呢?
原來是magic method __set

除此之外,performUpdate的其他部份看起來都很直觀。

接著看performInsert:

by 阿川先生