Obtenez des informations spécifiques à l'user de la database à l'aide de Laravel et AngularJS

Je développe une application utilisant Laravel et AngularJS.

Mon problème est que je souhaite get toutes les informations d'une table pour un certain user.

Dans le file route.php, j'ai déclaré un groupe afin que je puisse accéder à tous les commentaires en allant à:

  localhost / project / public / api / comments. 

Je souhaite également pouvoir get tous les commentaires d'un user donné en allant à:

  localhost / project / public / api / comment / id. 

Route::group(array('prefix' => 'api'), function() { Route::resource('comments', 'CommentController', array('only' => array('index', 'store', 'destroy'))); Route::get('comment/{id}', function($id) { $col = 'user_id'; return Comments::where($col, '=', $id); }); } 

Lorsque j'utilise ce code, j'avance l'erreur:

  ErrorException
     L'object de la class Illuminate \ Database \ Eloquent \ Builder n'a pas pu être converti en string 

Je peux recevoir le premier résultat en ajoutant:

 return Comment::where($col, '=', $id)->first(); 

Mais je souhaite recevoir tous les commentaires pour l'user donné. Comment cela peut-il être fait.

Vous devez get un résultat

 return Comments::where($col, '=', $id)->get(); 

Mais vous devez le sérialiser au format JSON (par exemple), vous devez donc:

 $comments = Comments::where($col, '=', $id)->get(); return Response::json(array('success'=>true,'comments'=>$comments->toJson())); 

Le routeur vous oblige à renvoyer un object de Response , pas une collection, un générateur ou autre chose – puisque Laravel essaie de convertir le respons en une string (comme il arrive aux vues), mais alors que les réponses ont une méthode _toSsortingng (), d'autres objects peut-être pas – donc votre erreur.

Vous devriez returnner une vue ou une autre réponse (comme JSON), peut-être faire quelque chose comme:

 Route::get('comment/{id}', function($id) { $comments = Comments::where('user_id', '=', $id)->get(); return View::make('myview')->with('comments', $comments); });