Vous êtes sur la page 1sur 4

Exercice de révision

Exercice 1: (6 pts)
1- Expliquer le code suivant et détailler le rôle de la transaction : (2pts)
use Illuminate\Support\Facades\DB;
DB::insert(insert into Archive select from etudiant where note<10');
La 1ère ligne ,on importe la facade DB qui sera utiliser pour faire appel aux fonctions de
manipulation d’une base de données
La 2ème ligne : la requete permet d’insérer les données des étudiants avec note inférieure à 10 dans la
table Archive .
Le rôle d’une transaction c’est lors d’un problème dans le serveur les requetes seront annulé en
ensemble .

2- Donner le contenu de la variable $U pour chaque cas : (3pts)

a-$U= DB::table('users')->join(contacts', 'users.id', '=', 'contacts.y_id")


->select('users.*’, 'contacts,phone’)->get();
$U contient la liste des utilisateur avec leur contact.(informations des utilisateurs avec la colonne
phone )

b- $U = DB::table(‘livre')->where('ishp', 102)->update(['prix' => 150]);


$U contient le nombre des livres avec ishp = 102 dont leurs prix seront modifies .

c- $U=DB::table('etudiant')->inRandomOrder()->first();
$U contient les information d’un étudiant aléatoire.

3.Quelle commande est utilisée pour créer un modèle et un contrôleur en même temps ?
Php artisan make :model NomModel -c
Exercice 2: (14 pts)
Dans notre base de données, on a la table « produits » déjà créée avec les colonnes
idp, libelle, dateProduction, QuiteStock
1- Créez une migration pour ajouter une colonne "prix" à la table "produits" : donner la commande
de création (1pt) + la méthode up()
(1pt) + la commande pour éxecuter la migration (1pt).
La commande de création :
Php artisan make :migration add_prix_to_produits_table
La méthode up() :
Public function up(){
Schema ::table(‘produits’,function (BluePrint $table){
$table->double(‘prix’) ; }
) ;

}
La commande pour exécuter la migration
Php artisan migrate --db=\database\migration\01211220122_add_prix_to_produits_table.php
2- Créez une Factory pour générer des données pour la table "produits".Les libelles doivent être
générés avec la méthode productName() de Faker .
Donner la commande de création de la factorie + le code de la méthode definition().(2pts)
création d'un factory :
php artisan make:factory ProduitFactory

méthode défininition

public function definition(){

return [
'idp' =>$this->fake()->RandomNumber->unique(),
'libelle' =>$this->fake()->productName(),
'dateProduction' =>$this->fake()->date(),
'QuantStock' =>$this->fake()->NumberBetween(0,100)
];
}

3- Créez un Seeder pour insérer 50 enregistrements dans la table"produits" en utilisant la Factory


créée précédemment : commande de création du seeder + méthode run()+ exécution (2pts).
La commande de création du seeder :
Php artisan make :seeder ProduitSeeder
La méthode run() :
Public function run(){
\App\Models\Produit ::factory(50)->create() ;
}
Exécution :
php artisan db:seed --class=ProduitSeeder

4- Sachant qu'un produit peut être commander plusieurs fois et une commande peut contenir
plusieurs produits à la fois. Donner la/les méthodes à ajouter dans les modèles Produit et
Commande (on suppose que les modèles sont créés) (2pts)
La relation c’est Many to Many
La function à ajouter dans le modèle Produit
Function commandes(){
Return $this->belongsToMany(\App\Models\
Commande::class,’facturation’,’produitid’,’commandeid’);
}

La fonction à ajouter dans le modèle Commande .


Public function produits(){
Return $this->belongsToMany(\App\Models\Produit::class,’commandeid’,’produitid’);
}

5. Donner tout ce qui est nécessaire pour pouvoir supprimer un produit via une page comme suit :

En utilisant un contrôleur CRUD :


Php artisan make :controller ProduitController –r
Création de la route dans web.php

Route::resource('produit',\App\Http\Controllers\ProduitController::class);
Création des views :
\ressources\views\produit\formsupp.blade.php

@extends(‘app.blade.php’) // dans la vue mère @yield(‘section’)

@section(‘content’)

<div class=’container ‘>
<form method= ‘post’ action= ‘{{ route(‘produit.destroy’)}}’>
@method(‘delete’)
@csrf
Id du produit à supprimer
<input name=’idp’ type= ‘text’ / >
</form>

</div>
@endsection
\resources\views\produit\index.blade.php
@extends(‘app.blade.php’) // dans la vue mère @yield(‘section’)

@section(‘content’)
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }} </div>
@endif
<table>
<tr>
<th> id produit </th>
<th> libelle produit </th>
<th> quantite produit </th>
<th> date production produit </th>
</tr>
@foreach($produits as $produit)
<tr>
<td> {{$product->idp }} </td>
<td> {{$product->libelle }} </td>
<td> {{$product->dateproduction }} </td>
<td> {{$product->quantite }} </td>

</tr>
@endsection

Les méthode du controller :


function index(){
$produits =\App\Models\Produit :: all() ;
return view(‘produit.index’,[‘produits’ =>$produits]);
}
Public function formsupp(){
Return return view(‘produit.formsup’);
}
Public function destroy(Request $request){
\App\Models\Produit::destroy($request->idp);
ou
\App\Models\Produit::where(‘id’,$request->idp)->delete();
}

Vous aimerez peut-être aussi