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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

CakePHP 4 修改表中的查詢結(jié)果

CakePHP 4 修改表中的查詢結(jié)果

PHP
慕斯709654 2023-08-19 17:30:03
我正在尋找有關(guān)如何在每次調(diào)用特定表時(shí)修改查詢結(jié)果的示例或解釋。我見過的所有例子主要是針對(duì)控制器的。我正在尋找類似于舊函數(shù) afterFind() 的東西。我的目標(biāo)是在我的表文件中放置一個(gè)函數(shù),以自動(dòng)修改站點(diǎn)上全局的結(jié)果。[或者:=>如果有人知道我可以自動(dòng)將單個(gè) json 列轉(zhuǎn)換為多個(gè)列的方法,這可以解決我的問題。]PS:我嘗試過弄亂方案、行為和集合,但沒有用。(除非我錯(cuò)誤地使用了一個(gè))
查看完整描述

1 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

這實(shí)際上取決于您需要如何準(zhǔn)確地修改結(jié)果,“將單個(gè) JSON 列轉(zhuǎn)換為多個(gè)列”相當(dāng)模糊,并且可以用各種不同的方式解釋。


在實(shí)體中轉(zhuǎn)換數(shù)據(jù)是一種選擇,但請(qǐng)注意實(shí)體應(yīng)該盡可能愚蠢,理想情況下您應(yīng)該盡可能將它們保留為普通數(shù)據(jù)傳輸對(duì)象。如果有其他方法解決問題,通常應(yīng)該避免在實(shí)體本身中進(jìn)行更大的“變革”操作。


修改結(jié)果的集中方法是查詢對(duì)象的結(jié)果格式化程序,它們可以輕松附加到Model.beforeFind事件/處理程序中,以便將它們應(yīng)用于特定表的所有查詢,甚至應(yīng)用于所有表。afterFind這幾乎就是您在 CakePHP 2.x 中要做的事情。


結(jié)果格式化程序還有一個(gè)優(yōu)點(diǎn),即當(dāng)您使用禁用水合作用的查詢(即返回?cái)?shù)組而不是實(shí)體的查詢)時(shí),它們將為您提供正確的數(shù)據(jù)。


一個(gè)快速而骯臟的例子:


public function beforeFind(\Cake\Event\EventInterface $event, \Cake\ORM\Query $query): \Cake\ORM\Query

{

    return $query->formatResults(function (\Cake\Collection\CollectionInterface $results) {

        return $results->map(function ($row) {

            // $row is the entity (or array when hydration is disabled) in the result set            


            $row['new_field'] = 1234;


            return $row;

        });

    });

}


查看完整回答
反對(duì) 回復(fù) 2023-08-19
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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