2021-12-06|閱讀時間 ‧ 約 2 分鐘

Laravel collection after sortBy array issue

在Laravel collection sortBy之後發現原本的array格式在資料回傳後居然變成json格式,以下依序描述問題與解法:
有一包data如下: $data = collect($data);
現在sortBy show_order欄位後,結果如下: $data = collect($data)-sortBy('show_order');
看似有照想要的結果排序,但是當把data return的時候,資料卻變成這樣:
然後前端就exception了! 為什麼array會變成這種奇怪的資料結構呢? 主要是sortBy之後index順序變了,這時候資料並不是一個有效的indexed array,因此被當作是associative array,就會轉換成json object結構了。
解決方法: 在sortBy之後加上-values(),來把array做reindex: $data = collect($data)-sortBy('show_order')-values(); 如此回傳後就會視為indexed array了。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.