Trouble with $ record-> exportTo ('json') è che verrà esportato tutti i campi record tutti. E nella maggior parte dei casi non è un comportamento desiderabile (ad esempio quando questo pezzo di json deve essere passato al browser). Un modo per limitare la portata di esportazione per specificare i campi DQL selezionare:
$user = Doctrine_Query::create()
->select('u.id, u.name')
->from('User u')
->addWhere('u.id = ?', $id)
->fetchOne();
$user_json = $user->exportTo('json');
$ user_json poi avrà qualcosa di simile:
{
"id": 123,
"name": "John Smith",
"password": null,
"deleted": null
}
in modo da non esporre il valore del campo "password", ma fa esporre la struttura del database sottostante. Ancora una volta, potrebbe non essere quello che vogliamo. Quello che faccio è specificare i campi in DQL selezionare + Visualizza come array di codificare poi JSON:
$user = Doctrine_Query::create()
->select('u.id, u.name')
->from('User u')
->addWhere('u.id = ?', $id)
->fetchOne(array(), Doctrine::HYDRATE_ARRAY);
$user_json = json_encode($user);
In questo caso JSON sarà simile a qualcosa come:
{
"id": 123,
"name": "John Smith"
}
fonte
2011-09-12 10:15:29
La seconda risposta è molto buona. [http: // stackoverflow.com/domande/6706485/how-to-encode-dottrina-entità-to-JSON-in-symfony-2-0-ajax-applicazione] [1] [1]: http: // StackOverflow .com/questions/6706485/how-to-encode-doctrine-entities-to-json-in-symfony-2-0-ajax-application – csadan