第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將集合與數(shù)組返回到前??端的區(qū)別?

將集合與數(shù)組返回到前??端的區(qū)別?

PHP
桃花長相依 2021-11-26 15:31:15
背景我正在使用 Laravel 框架進行開發(fā),最近不得不從 SQL 數(shù)據(jù)庫中檢索一些數(shù)據(jù),分布在幾個表中,并且還需要根據(jù)某個列聚合結(jié)果以方便展示。作為一個通用的解決方案,我認(rèn)為我至少可以通過兩種方式完成任務(wù)。編寫一個涉及 ::where 和 ->groupBy 以及其他運算符的 Eloquent 查詢(我走的路徑)構(gòu)建一個數(shù)組數(shù)組無論哪種方式,結(jié)果都會被發(fā)送回顯示刀片頁面。題使用每種方法的含義是什么?此外,傳回一個集合(Eloquent 查詢的結(jié)果)是否真的意味著您將所有字段數(shù)據(jù)傳遞給前端,即使其中大部分?jǐn)?shù)據(jù)可能不會被使用?我的想法包括:使用 Eloquent 看起來更優(yōu)雅,我認(rèn)為(?)更有效。但是,當(dāng)只需要這些數(shù)據(jù)的一個子集時,我似乎將傳遞帶有所有數(shù)據(jù)的對象。與上述相反,構(gòu)建數(shù)組意味著我必須手動編碼,但我的數(shù)組包含需要傳遞回前端的內(nèi)容,僅此而已。
查看完整描述

1 回答

?
幕布斯6054654

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é)果


查看完整回答
反對 回復(fù) 2021-11-26
  • 1 回答
  • 0 關(guān)注
  • 343 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號