====== Laravel ======
===== Documentation =====
* https://laravel.com
===== Installation =====
Installation de composer et npm nodejs
# en root
apt install zip unzip curl php-sqlite3 php-pgsql postgresql postgresql-postgis
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
rm composer-setup.php
mv composer.phar /usr/local/bin/composer
## en user
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
nvm install 24
Créer le projet
composer create-project laravel/laravel nom_du_projet
Installer livewire
composer require livewire/livewire
Installer breeze
composer require laravel/breeze --dev
php artisan breeze:install livewire
===== Problème du début =====
===== 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.
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')
}
}
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.'
';
// ou en écriture simplifié
echo 'Commentaire du '.$c->created_at." pour l'article ".$c->article->titre.'
';
}
===== Ajouter ses class ou fonctions =====
Créez un fichier **helpers.php** dans par exemple **app/** puis ajoutez-le dans le **app/Providers/AppServiceProvider.php**
Pour ajouter un répertoire contenant des fichiers de class, Créez par exemple un dossier **app\MyClass** et posez votre fichier de class suivant la norme psr-4
exemple :
vi app/MyClass/MaClass.php
===== Mettre en français strftime =====
Ajoutez dans la fonction boot **app/Providers/AppServiceProvider.php**
setlocale(LC_ALL, 'fr_FR.UTF-8');
Même remarque pour mettre Carbon en français
Carbon::setLocale(config('app.locale'));
La config app.locale doit être à **fr**
===== Intégrer le framework en dehors de public =====
// Intégration du framework
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';