前言
定義 Eloquent Model 的時候,會增加 accessors (即 getXXXAttribute),但會發現執行 toArray
時,accessors 不會一併被輸出,就來解決一下這個問題吧
問題描述
定義 User Model
1 | use Illuminate\Database\Eloquent\Model; |
執行結果
1 | $user = new User([ |
解決方法
User 物件解決方法
那要連同 name 及 age 也一同輸出時該如何處理呢?只要使用 append
或者 setAppends
即可。
1 | $user->append('name')->append('age')->toArray(); |
Collection 物件解決方法
遇到 collection 的時候該如何處理呢?
1 | User::all()->each(function($user) { |
但 collection 其實有 Higher Order Messaging 可以使用,所以程式碼可以簡化成
1 | User::all()->each->setAppends(['name', 'age'])->toArray(); |
最後附上可執行的範例