Ceci est une ancienne révision du document !
La dernière version 4.2 bug sous chrome et je n’ai pas trouvé de solution pour que ça marche, il faut donc forcer l’installation de la version 4.1 avec la commande
composer.phar create-project laravel/laravel=4.1.* nom-du-projet --prefer-dist
Laravel Schema Designer ⇒ http://www.laravelsd.com/ permet de créer des bases de données avec la souris puis de télécharger les fichiers de model, view et schema.
Pour que tout se passe bien, nommé vos tables au pluriel, vos modèles au singulier, votre id doit s’appeler id…
Bref, voici un schéma
Pour stocker des articles
Table: articles Champ: id, user_id, titre, contenu...
Commentaires des articles
Table: Commentaires Champ: id, article_id, user_id, contenu...
Si on veut faire une table pivot, on nomme la table par ordre alphabétique du nom au singulier des deux tables concernées et elle doit contenir les 2 clés étrangères correspondantes
Table: article_commentaire Champ: article_id, commentaire_id
D’autres explications et schéma par là ⇒ http://laravel.sl-creation.org/laravel-4-chapitre-33-les-relations-avec-eloquent-1/
Un article peut contenir plusieurs commentaires, nous allons définir la relation un-vers-plusieurs et regarder comment récupérer les données qu’il nous faut.
<?php /** * Article */ class Article extends Eloquent{ // Nom de la class au singulier // Automatiquement la table articles sera lié public function commentaires(){ return $this->hasMany('Commentaire'); // le champ article_id sera utilisé par défaut // sinon spécifié le champ de la table commentaire qui fait le lien // ...hasMany('Commentaire','id_articles') } }
<?php /** * Commentaire */ class Commentaire extends Eloquent{ // Nom de la class au singulier // Automatiquement la table commentaires sera lié public function article(){ return $this->belongsTo('Article'); // le champ article_id sera utilisé par défaut // sinon spécifié le champ de la table commentaire qui fait le lien // ...belongsTo('Commentaire','id_articles') } }
Maintenant nous voulons afficher les 10 derniers commentaires en spécifiant le titre de l’article.
// On récupère les 10 derniers éléments les plus récents de la table commentaires $lastCommentaires = Commentaire::orderBy('created_at','desc')->take(10)->get(); // On boucle sur les enregistrements foreach ($lastCommentaires as $c) { echo 'Commentaire du '.$c->created_at." pour l'article ".$c->article()->first()->titre.'<br>'; // ou en écriture simplifié echo 'Commentaire du '.$c->created_at." pour l'article ".$c->article->titre.'<br>'; }
Ajoutez dans app/start/global.php
include app_path().'/monfichier.php';
Ajoutez dans app/start/global.php
setlocale(LC_ALL, 'fr_FR.UTF-8');
// Intégration du framework require __DIR__.'/bootstrap/autoload.php'; $app = require_once __DIR__.'/bootstrap/start.php';