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

Share on LinkedInTweet about this on TwitterShare on FacebookShare on RedditShare on Google+

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();
        }
    }

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

Share on LinkedInTweet about this on TwitterShare on FacebookShare on RedditShare on Google+

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

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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *