Outils pour utilisateurs

Outils du site


devweb:laravel:start (lu 23664 fois)

Ceci est une ancienne révision du document !


Laravel

Installation

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

Convention de nommage

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.

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

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/

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>';
}

Ajouter ses class ou fonctions

Ajoutez dans app/start/global.php

Pour ajouter un fichier

include app_path().'/monfichier.php';

Pour ajouter un répertoire contenant des fichiers de class, ajouter votre répertoire dans le ClassLoader

ClassLoader::addDirectories(array(
 
	app_path().'/commands',
	app_path().'/controllers',
	app_path().'/models',
	app_path().'/database/seeds',
 
	app_path().'/mesClass',
 
));

Mettre en français strftime

Ajoutez dans app/start/global.php

setlocale(LC_ALL, 'fr_FR.UTF-8');

Intégrer le framework en dehors de public

// Intégration du framework
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';
devweb/laravel/start.1411718767.txt.gz · Dernière modification: 26-09-2014 10:06 de edmc73