Premier projet Laravel 5.4 : Afficher les données depuis la base de données (Part. 3/7)

Maintenant que l’on a paramétré et créé notre les premières tables de notre base de donnée, on va créer le modèle qui permet de requêter dessus. Pour cela, on va utiliser la commande artisan et créer un dossier « Models » où on placera tous nous modèles :

php artisan make:model Models/Post

Ce qui nous crée le dossier App/Models contenant notre fichier Post.php :

Par défaut, si on ne renseigne pas de table correspondante, le framework considère que la table correspond au nom de la classe au pluriel, sinon on peut également renseigner son nom comme ceci :

//...
class Post extends Model{
   protected $table = 'posts';
}

Pour pouvoir récupérer des données afin de pouvoir travailler, on va faire un script de migration avec des données de test :

php artisan make:migration PopulateTestingDatas

Et dans notre fichier de migration :

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class PopulateTestingDatas extends Migration {

   /**
   * Run the migrations.
   *
   * @return void
   */
   public function up()
   {
      //create user jane smith
      DB::table('users')->insert([
         [
            'name'=>'Jane',
            'firstname'=>'Smith',
            'email'=>'jane.smith@yopmail.com',
            'avatar_url'=>'img/avatar/Mrs-Smith.jpg',
            'password'=>'123456'
         ]
      ]);

      //getting user id of jane smith
      $user_id=DB::table('users')->where('name', 'jane')->take(1)->value('id');

      //insert 5 posts for jane smith
      for ($i=0; $i<5; $i++) {
         DB::table('posts')->insert([
            [
               'title'=>'post testing '.$i,
               'content'=>'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed 
                           do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
               'user_id'=>$user_id
            ]
         ]);
      }
   }
   /**
   * Reverse the migrations.
   *
   * @return void
   */
   public function down()
   {
      //getting user id of jane smith
      $user_id=DB::table('users')->where('name', 'jane')->take(1)->value('id');

      //delete posts
      DB::table('posts')->where('user_id', $user_id)->delete();

      //delete user jane smith
      DB::table('users')->where('name', '=', 'Jane')->delete();
   }
}

En base de donnée donc un jeu de données avec 1 utilisateur et 5 articles posté par cet utilisateur.
Maintenant, on voudrait retourner ce jeu de données via une url http://localhost/laravel-test/public/posts au format JSON.
Dans notre contrôleur PostController.php, dans la fonction index, on va récupérer la liste des posts (articles) disponible. Pour utiliser le modèle Post.php créé plus tôt, il faut renseigner le namespace de celui-ci, en dessous du namespace de la classe en cours d’utilisation :

<?php
    namespace App\Http\Controllers;
    use App\Models\Post;

    class PostController extends Controller {

        public function index(){
            return Post::all();
        }
    }

On ajoutera le routing pour cette nouvelle fonction dans le fichier web.php pour dire que l’appel à l’URL /posts via la méthode GET, appellera la fonction index de la classe PostController.

// fichier : ./route/web.php
// [...]
Route::get('/posts', 'PostController@index');

Et voici notre liste retournée via http://localhost/laravel-test/public/posts :

Affichons nos posts sur une page qui listera les 4 derniers posts et qui mettra en forme ces données !

Télécharger les sources

5 réflexions au sujet de « Premier projet Laravel 5.4 : Afficher les données depuis la base de données (Part. 3/7) »

  1. Je pense qu’il manque une info pour pouvoir afficher les posts : il faut aussi modifier le fichier des routes (routes/web.php) et en ajouter une :
    Route::get(‘/posts’, ‘PostController@index’);

    • Salut, je te remercie d’avoir pris le temps de signaler cet oublie. Je relirai mon article dès que possible !
      (Actuellement j’ai eu un accident et j’ai pas trop la possibilité de travailler sur le blog)

      • Pas de souci !
        Tant que j’y suis , il me semble qu’il y a aussi une micro erreur dans l’étape suivante, la 4/7 :
        au moment du référencement du fichier custom.css dans posts.blade.php :
        Merci beaucoup pour ces articles super précis sur le projet Laravel, et remets-toi bien !

    • Re, c’est corrigé pour l’oubli de référencement de la route ! Merci encore 🙂 J’ai vérifier le référencement du fichier custom.css et il n’y a pas d’erreur à ce niveau là.
      Voilà, bon j’ai mis le temps mais j’ai eu un accident de moto qui m’a immobilisé un hyper longtemps ^^

  2. Ping : Premier projet Laravel 5.4 : La mise en place (configuration & database migration) (Part. 2/x) | Blog développeuse - Hamon

Laisser un commentaire