Outils pour utilisateurs

Outils du site


devweb:laravel:start (lu 23660 fois)

Ceci est une ancienne révision du document !


Laravel

Convention de nommage

ATTENTION au pluriel et singulier !!!

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...

Models et relation

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>';
}
devweb/laravel/start.1390662088.txt.gz · Dernière modification: 25-01-2014 16:01 de edmc73