1 回答

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;
});
});
}
- 1 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報(bào)