Jak správně naplnit jsonResponse z kdyby/doctrine

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tivvit
Člen | 36
+
0
-

Ahoj,

Jak z objektu který vrací kdyby/doctrine udělám pole abych ho mohl předat do JsonResponse?

<?php
$this->sendResponse(new JsonResponse((array) $this->products->getProducts(1)));
?>

dostávám
"\u0000*\u0000name": "sffds"</script>

Chápu, že jde o problém s kódováním, ale tuším že to nette nějak řeší jen nemohu najít jak.

Díky

Majkl578
Moderator | 1364
+
+2
-

Buď implementuj JsonSerializable nebo si vytvoř vlastní transformační třídu, která entitu bude převádět na pole.

tivvit
Člen | 36
+
0
-

jedná se o Nette/Object

David Kudera
Člen | 455
+
+1
-

A nebo použiješ u query array hydrátor (jak se to píše česky správně? :-)

$query->getResult(AbstractQuery::HYDRATE_ARRAY)

To ti vrátí z db přímo pole místo entit. dokumentace

Majkl578
Moderator | 1364
+
0
-

To ale jednak sabotuje princip identity mapy, druhak to může silně nabourat oddělení vrstev aplikace.

David Kudera
Člen | 455
+
0
-

To s identity mapou mi nedošlo a oddělení vrstev aplikace.. Ale jo, to je vlastně asi taky pravda.. Jinak i tady už se nedávno něco podobnýho řešilo