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 阿川先生

有技術問題想要找人討論嗎?

歡迎前往我開發的 Devs.tw 程式設計討論區

一起來討論技術問題、分享技術筆記、文章吧!

前往逛逛:https://devs.tw