Laravel 7
Laravel 7 a été publié officiellement. Les versions défilent désormais plus rapidement avec le nouveau système de versionnage.
Shopping
Une application complète de commerce en ligne pour illustrer l’utilisation de Laravel 7.
La boutique (frontend)
- Les données 1/2
- Les données 2/2
- L’authentification
- Le panier
- La commande
- La confirmation de la commande
- Le paiement avec Stripe
- La facture
- Le compte client 1/3
- Le compte client 2/3
- Le compte client 3/3
- Les emails
- Notifications, pages et statut
L’administration (backend)
- L’administration
- Paramétrer la boutique
- Les pays
- Les frais de port
- Les états de commande
- Les pages
- Les produits
- Les clients et les adresses
- Les commandes
- La maintenance
- Les statistiques
Divers
27 commentaires
Nanourgo
Bonjour !
J’ai terminé le tutoriel complet sur Laravel 7. Et j’ai commencé un exercice afin de confirmer ce que j’ai appris.
J’ai créé des tables avec clés étrangère. Cependant quand je fais ma migration, je reçois l’erreur suivante :
General error: 1215 Cannot add foreign key constraint (SQL: alter table `courses` add constraint `courses_teacher_id_foreign` foreign key (`teacher_id`) references `teachers` (`id`) on delete cascade)
Voici les deux tables :
la table teachers
public function up()
{
Schema::create(‘teachers’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘name’);
$table->string(’email’)->unique();
$table->string(‘passmord’);
$table->timestamp(’email_verified_at’)->nullable();
$table->enum(‘civility’, [‘Mme’, ‘M.’]);
$table->string(‘phone’);
$table->string(‘image’)->nullable();
$table->boolean(‘newsletter’);
$table->boolean(‘admin’)->default(false);
$table->timestamp(‘last_seen’)->nullable();
$table->timestamps();
$table->rememberToken();
});
}
la table courses qui doit recevoir la clé étrangère de la table categories
public function up()
{
Schema::create(‘courses’, function (Blueprint $table) {
$table->bigIncrements(‘id’, true);
$table->string(‘title’);
$table->string(‘description’);
$table->integer(‘session’);
$table->decimal(‘price’);
$table->boolean(‘active’)->default(false);
$table->string(‘image’)->nullable();
$table->date(‘start’);
$table->foreignId(‘teacher_id’)->constrained()->onDelete(‘cascade’);
$table->timestamps();
});
Schema::table(‘courses’, function (Blueprint $table) {
$table->bigInteger(‘teacher_id’)->unsigned();
$table->foreign(‘teacher_id’)->references(‘id’)->on(‘teachers’)->onDelete(‘set null’);
});
}
J’ai déjà éssayé tout mais je ne trouve pas la solution
bestmomo
Bonjour,
Au niveau de la syntaxe pour les id des tables il vaut mieux utiliser la méthode id :
$table->id();
Pour déclarer la clé étrangère il suffit normalement d’une ligne :
$table->foreignId('teacher_id')->constrained()->onDelete('set null');
Nanourgo
Merci bien ça marche
Nanourgo
Bonjour !
J’ai terminé le tutoriel complet sur Laravel 7. Et j’ai commencé un exercice afin de confirmer ce que j’ai appris.
J’ai créé des tables avec clés étrangère. Cependant quand je fais ma migration, je reçois l’erreur suivante :
General error: 1215 Cannot add foreign key constraint (SQL: alter table `courses` add constraint `courses_teacher_id_foreign` foreign key (`teacher_id`) references `teachers` (`id`) on delete cascade)
Voici les deux tables :
la table categories
public function up()
{
Schema::create(‘categories’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘name’, 100);
$table->string(‘slug’, 50);
});
}
la table courses qui doit recevoir la clé étrangère de la table categories
public function up()
{
Schema::create(‘courses’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘title’);
$table->string(‘description’);
$table->integer(‘session’);
$table->decimal(‘price’);
$table->boolean(‘active’)->default(false);
$table->string(‘image’)->nullable();
$table->date(‘start’);
$table->timestamps();
});
Schema::table(‘courses’, function (Blueprint $table) {
$table->bigInteger(‘category_id’)->unsigned();
$table->foreign(‘category_id’)->references(‘id’)->on(‘categories’)->onDelete(‘set null’);
});
}
J’ai déjà éssayé tout mais je ne trouve pas la solution
Ybag62
Bonjour.
Merci beaucoup pour ces heures de partage, je prends plaisir à apprendre en vous lisant !
Pour des besoins professionnels, je me forme sur le PHP et notamment laravel grâce à vous.
Je dois utiliser laravel 7 car la version PHP du serveur pro mis à ma disposition est en version 7.2
J’ai besoin d’avoir une gestions de rôles et de permission, j’ai vu jetstream dans votre cours Laravel 8 mais il n’est pas compatible avec PHP 7.2.
Auriez-vous quelque chose de similaire à me conseiller ?
D’avance, merci.
Gaby.
bestmomo
Bonjour,
Il y a de nombreux packages pour les rôles et permissions, ils sont répertoriés (ainsi que de multiples autres ressources intéressantes) ici.
Krum
Bonjour à tous.
J’aimerai savoir si il existe un calendrier CRUD efficient avec Laravel7?
J’ai test le Madhatter…. il n’a pas l’air de fonctionner avec cette version…
J’ai également essayer un fork de ce dernier (qlick).
Mais rien à faire. Une idée s’il vous plait?
Momartalla
Bonjour,
Merci beaucoup pour ce tutoriel!
J’ai constaté sur la plupart des sites de e-commerce qu’il y’a une table catégories, mais pas sur votre site. Est ce que je peux avoir un tuto sur ça et aussi sur le menu latéral pour les widgets?
bestmomo
Bonjour,
Je n’ai pas prévu de d’étendre cet exemple de boutique qui est déjà bien chargé. Pour les catégories il y a cet exemple qui est allé plus loin avec la même base en ajoutant entre autres des catégories.
Momartalla
Merci BESTMOMO
guru
Bonjour, moi j’ai des problème avec le code. j’ai deux erreurs que je n’arrive pas a resoudre:
la première c’est cette erreur
BadMethodCallException
Call to undefined method Illuminate\Database\Eloquent\Relations\HasMany::isEmpty()
lorsque je commente la condition //$addresses->isEmpty(), elle m’affiche une autre erreur
ErrorException
Trying to get property ‘country_id’ of non-object
Illuminate\Foundation\Bootstrap\HandleExceptions::handleError
C:\laragon\www\shopping\app\Http\Controllers\OrderController.php:29
que faire?
bestmomo
Bonjour,
Il faut que la base soit renseignée avec des adresses, ce qui est prévu avec le seeder, parce que le profil utilisateur est traité par la suite.
julien
Salut,
ce serait super un petit tuto pour un widget de recherche…
Tu aurais un framework à nous conseiller?
Encore merci,
Julien
bestmomo
Salut
Avec Laravel il y a le package officiel Scout.
julien
Merci!
Lerado
Salut bestmomo, et milles mercis pour ces tutoriels si bien ficelés, autant ceux de Vue que ceux de Laravel. Quand j’ai découvert ce site je cherchais un moyen d’améliorer de façon significative mes compétences en frameworking front-end et back-end. Autant dire qu’ici, j’ai trouvé les deux ! J’ai été primé par mon université grâce à toi ! Encore merci.
Tu as toutes les belles pensées de la communauté francophone.
Juste comme ça, est-ce qu’il y’aura un tuto pour apprendre à déployer un projet avec Vue en front-end et Laravel en api back-end ?
bestmomo
Salut,
Merci pour le retour et félicitation !
Je n’ai pour le moment aucun projet d’article mais ça va revenir à la rentrée 😉
Sarx
Bonjour !
J’ai enfin terminé tous le tutoriel sur Laravel 7.
Et je tiens à te remercier pour nous avoir dispenser ton savoir de manière claire et professionnelle !
ça a vraiment été un plaisir de le suivre ! 🙂
Cependant une question demeure… Comment héberges-t-on un site fait sous Laravel ?
Par exemple sur l’hébergeur OVH mutalisé ?
Encore merci !
bestmomo
Salut,
Pour un hébergement mutualisé le plus simple c’est d’avoir un site qui tourne en local et :
Et normalement ça devrait fonctionner
Pour les updates ultérieurs avec Composer si ça coince au niveau mémoire (avec un composer update) il faut d’abord faire l’update en local, envoyer le fichier composer.lock et faire composer install sur le serveur.
Sarx
D’accord, merci pour cette précision ! Je testerai ça à l’occasion.
En ce qui concerne les cookies ? Laravel travaille-t-il avec des cookies sans que l’on sache ?
(désolé, si m’a question peut paraître idiote… )
bestmomo
Salut,
Laravel ne nous cache rien 🙂
En général on a un cookie de session et un pour le token CSRF. De toute façon on peut tout voir avec les outils des navigateurs au niveau des requêtes.
Sarx
Ah oui, c’est vrai… J’avais oublier.
Encore désolé pour la question idiote. haha
Et merci beaucoup de ta réponse ! 🙂
pascalain004
Bonjour bestmomo . C’est un véritable régal de lire vos tutos et une aide incommensurable pour des débutants comme moi.
Merçi pour tout.
J’ai une sollicitation.
A ton avis, pour modéliser en UML mon application web de manière à passer facilement de la conception au développement,
Quels approche tu recommande? (diagrammes, etc … les plus utiles).
Bref quel astuce ou démarche (étape par étape) conseille tu as un débutant pour passer de la modélisation au code.
Enfin, je me suis fait l’idée que pour mieux développer avec laravel, il considérer que à chaque fonctionnalité de l’application, correspond un contrôleur et les routes conséquentes. Suis je dans l’erreur?
bestmomo
Bonjour,
Merci d’apprécier mon travail ! Je trouve que le partage est un des piliers de notre humanité !
En ce qui concerne la modélisation, personnellement j’ai appris il y a maintenant bien longtemps avec la méthode Merise. Après ça devient une seconde nature et le processus se fait en tache de fond dans le cerveau ! C’est une excellente porte d’entrée à ce domaine et il existe de très bons tutoriels comme celui-ci.
Je suis d’accord pour la multiplication des contrôleurs, d’ailleurs Taylor Otwell, le créateur de Laravel, l’a conseillé maintes fois, des contrôleurs trop chargés sont un signe qu’il faut refactoriser son code.
theuglife
Merci beaucoup pour ce tutoriel.
j’espère qu’il y’aura une API GraphQL.
bestmomo
Salut,
Non je n’ai pas prévu ça, désolé…
theuglife
haaaa dommage n’empêche ça reste un grand plaisir de te suivre.