1 回答

TA貢獻1876條經(jīng)驗 獲得超7個贊
將整個結(jié)果集從 DB 海峽返回給請求者不是一個好習(xí)慣。您可以在一個非常小的項目或 PoC 中執(zhí)行此操作,或者在學(xué)習(xí)某些內(nèi)容時執(zhí)行此操作。在其他情況下,您需要一個層來將 DB 中的結(jié)果轉(zhuǎn)換為結(jié)果數(shù)據(jù)。這一層也很重要,因為很多時候來自數(shù)據(jù)庫的結(jié)果不是我可能需要返回的最終數(shù)據(jù),所以我可能需要在返回之前進行一些數(shù)據(jù)處理/轉(zhuǎn)換/替換。該層是如何實現(xiàn)的 - 這取決于。
使用 Eloquent 看起來更優(yōu)雅,我認(rèn)為(?)更有效。但是,當(dāng)只需要這些數(shù)據(jù)的一個子集時,我似乎將傳遞帶有所有數(shù)據(jù)的對象。
這既快速又“骯臟”,從長遠(yuǎn)來看會導(dǎo)致問題。正如您所提到的,Collection 是一個對象數(shù)組,而 Collection 實例本身是一個可遍歷的對象,因此您需要有一個中間件將您的對象轉(zhuǎn)換為可序列化的表示,以便 Laravel 可以將其設(shè)置為響應(yīng)。這可能已經(jīng)在幕后為您完成了。
與上述相反,構(gòu)建數(shù)組意味著我必須手動編碼,但我的數(shù)組包含需要傳遞回前端的內(nèi)容,僅此而已。
這速度較慢,但您可以控制返回的內(nèi)容。如果您對此轉(zhuǎn)換層沒有任何抽象并將該工作保留在控制器中 - 從長遠(yuǎn)來看,它也會導(dǎo)致問題,因為它將難以維護和重構(gòu)。
因此,帶有抽象轉(zhuǎn)換層的方法是最好的選擇,但是是的,它需要事先完成一些額外的工作,這需要一些時間,但從長遠(yuǎn)來看會給你更好的結(jié)果
- 1 回答
- 0 關(guān)注
- 343 瀏覽
添加回答
舉報