Aide Laravel
Aide Laravel
Aide Laravel
L’idée d’un ORM, c’est de remplacer l’écriture des requêtes SQL par
de la manipulation d’objet.
#Créer un projet
Il ya plusieurs façons de créer un projet. Je vous conseille de passer
par « Composer » qui fonctionnera, quelle que soit la plateforme.
#Les projets
// Nouveau projet
composer create-project laravel/laravel projectName
// Lancement du serveur/projet
php artisan serve
// Liste de commandes
php artisan list
// Aide sur les commandes
php artisan help migrate
// console Laravel
php artisan tinker
#Réinstaller un projet
Si vous changez de machine ou si vous récupérez le code source depuis
Git il sera nécessaire de réinstaller les dépendances. Pour ça :
1. composer install
2. npm install
3. php artisan key :generate
4. configurer base de données .env
5. php artisan migrate
6. php artisan db :seed
7. php artisan serv
Host ?
// Route pour tous les verbes (GET, POST, PUT, DELETE, ...)
Route::any('/', function () {
//
});
// Route Redirect
Route::redirect('/clients', '/customers');
// Paramètres de la route
Route::get('/user/{id}', function ($id) {
return 'Utilisateur '.$id;
});
// Paramètre optionnel
Route::get('/user/{name?}', function ($name = 'John') {
return $name;
});
// Route nommée
Route::get(
'/utilisateur/profil',
[UserProfileController::class, 'show']
)->name('profile');
// Ressource
Route::resource('photos', PhotoController::class);
// Ressource partielle
Route::resource('photos', PhotoController::class)->only(['index',
'show']);
Route::resource('photos', PhotoController::class)->except(['create',
'save', 'update', 'destroy']);
// Génération de redirections...
return redirect()->route('profile');
// Route fallback
Route::fallback(function () {
//
});
#Les contrôleurs
Le contrôleur va contenir la logique « métier » pour traiter les
demandes des clients.
use Illuminate\Http\Request;
// Valider
$validatedData = $request->validate($rules)
// app/resources/views/produits/index.blade.php
return view('products.index', ['products', $products]);
}
return redirect(route('products.index'));
}
return redirect(route($product->path()));
}
public function delete(Product $product)
{
$produit->supprimer();
return redirect("/contacts");
}
}
#Éloquent « l’ORM »
#La migration________________________________________
Une migration c’est ce qui va nous permettre d’initialiser la base de
données directement depuis Laravel. Bien que cette partie est
optionnelle je vous conseille vivement de l’utiliser (c’est un
standard en entreprise.)
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Par exemple, si vous souhaitez ajouter dans votre table deux champs
(un texte et un booléen), il faudra ajouter dans la méthode up :
$table->string('texte');
$table->boolean('termine');
// up()
Schema::table('users', function (Blueprint $table) {
$table->text('comment');
});
// down()
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('comment');
});
#Le modèle
Le modèle est l’objet qui nous permettra de faire « nos requêtes SQL
», l’accès à nos données.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use HasFactory;
}
# Interagir avec la base de données
// Créer un enregistrement en base de données
$Stagiaire = new Stagiaire;
$Stagiaire->name = $request->name;
$Stagiaire->save();
L'ORM (Relations)
Les jointures sont à définir directement dans le modèle. Elles seront
des méthodes accessibles via l’objet de votre modèle.
#One To One
class Todo extends Model {
// Dans le modèle
public function categorie()
{
return $this->hasOne(Categorie::class);
}
}
#One To Many
class Post extends Model {
// Dans le modèle
public function comments()
{
return $this->hasMany(Comment::class);
}
$with = ['produit'];
#Commande de base
// Migration de la base de données
$ php artisan migrate
// Créez un contrôleur
$ php artisan make:controller ProductsController
// ex: database/factories/ProductFactory.php
public function definition() {
return [
'name' => $this->faker->text(20),
'price' => $this->faker->numberBetween(10, 10000),
categorie => $this->faker->randomElement([‘Legumes’,’Fruits’,’Boissons’]),
];
}
#Seeder
Ce que nous allons remplir réellement.
// ex: database/seeders/DatabaseSeeder.php
public function run() {
Product::factory(10)->create();
}
// Définir la session
$request->session()->put('key', 'value');
// Récupération de la session
$value = session('key');
Si session : if ($request->session()->has('users'))
// Suppression de la session
$request->session()->forget('key');