2013-05-19 4 views
4

Hy all, quelqu'un peut-il m'aider à convertir certaines données qui seront renvoyées par le modèle (basé sur la requête RAW) en JSON.Laravel, convertissant les données de la requête brute en JSON

Donc, dans mon contrôleur j'ai quelque chose comme:

public function get_index() { 
    $data = Something::getDataFromRawQuery(); 

    return View::make('....')->with('data', $data); 
} 

Alors ma question est de savoir comment transmettre des données JSON à la vue du contrôleur?

Voici la requête:

$apps = DB::query('SELECT a.name, 
    a.desc, 
    a.sig, 
    ar.rate 
    FROM something a 
    INNER JOIN something_else ar 
    ON (a.id=ar.something_id) 
    ORDER BY ar.rate DESC' 
); 

return $apps; 
+0

Si ce n'est pas Fluent ou éloquent, alors qu'est-ce que c'est? mysqli? PDO? Pouvez-vous nous montrer le code faisant la requête? –

+0

mon erreur j'ai édité la question, merci. – Srle

+0

Par curiosité: pourquoi évitez-vous Fluent Query Builder? –

Répondre

8

DB::query retourne un tableau simple, donc il suffit d'appeler json_encode directement sur elle:

$data = Something::getDataFromRawQuery(); 

return View::make('....')->with('data', json_encode($data)); 
+0

Obtention d'une erreur: appel à une fonction membre to_array() sur un non-objet lors de l'utilisation de to_array() – Srle

+0

Après cela dans .js, var data = ; je reçois suivantes: Affichage du rendu d'erreur: [quelque chose :: modèle] Conversion de la chaîne à la chaîne – Srle

+0

Pourquoi êtes-vous 'json_decode'ing il? Faites juste 'var data = ; 'et vous avez terminé. –

2

Il suffit d'utiliser json_encode()

public function get_index() { 
    $data = Something::getDataFromRawQuery(); 

    /* Do your loop here to build an array "results" from $data, if necessary 
     Really depends on what ::getDataFromRawQuery returns. */ 

    return View::make('....')->with('data', json_encode($results)); 
} 
Questions connexes