client(idclient ,nom,prenom)
categorie(idcategorie,nom,description)
produit(idproduit,#idcategorie,nom ,prix,quantiteStock,marque)
vente(idvente,#idclient,#idproduit,quantite,datevente)
1.Migration
To create migrations for the four tables (client, categorie, produit, vente) in Laravel, you can follow these steps:
Step 1: Open the terminal and navigate to your Laravel project directory.
Step 2: Run the following command to create a migration for the client table:
gophp artisan make:migration create_clients_table --create=clients
This command will generate a migration file in the database/migrations
directory with a name that includes the current timestamp and the name of the table being created.
Step 3: Open the migration file (located in database/migrations
) for the client table and add the following code to the up()
method:
luaSchema::create('clients', function (Blueprint $table) {
$table->id('idclient');
$table->string('nom');
$table->string('prenom');
$table->timestamps();
});
This will create the clients
table with the specified columns.
Step 4: Run the following command to create a migration for the categorie table:
gophp artisan make:migration create_categories_table --create=categories
Step 5: Open the migration file for the categorie table and add the following code to the up()
method:
luaSchema::create('categories', function (Blueprint $table) {
$table->id('idcategorie');
$table->string('nom');
$table->text('description');
$table->timestamps();
});
This will create the categories
table with the specified columns.
Step 6: Run the following command to create a migration for the produit table:
gophp artisan make:migration create_produits_table --create=produits
Step 7: Open the migration file for the produit table and add the following code to the up()
method:
luaSchema::create('produits', function (Blueprint $table) {
$table->id('idproduit');
$table->foreignId('idcategorie')->constrained('categories');
$table->string('nom');
$table->decimal('prix', 10, 2);
$table->integer('quantiteStock');
$table->string('marque');
$table->timestamps();
});
This will create the produits
table with the specified columns, including a foreign key constraint to link each product to its category.
Step 8: Run the following command to create a migration for the vente table:
gophp artisan make:migration create_ventes_table --create=ventes
Step 9: Open the migration file for the vente table and add the following code to the up()
method:
bashSchema::create('ventes', function (Blueprint $table) {
$table->id('idvente');
$table->foreignId('idclient')->constrained('clients');
$table->foreignId('idproduit')->constrained('produits');
$table->integer('quantite');
$table->date('datevente');
$table->timestamps();
});
2.Models
Here are the model classes:
php<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Client extends Model
{
protected $table = 'clients';
protected $primaryKey = 'idclient';
protected $fillable = ['nom', 'prenom'];
public function ventes()
{
return $this->hasMany(Vente::class, 'idclient');
}
}
php<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Categorie extends Model
{
protected $table = 'categories';
protected $primaryKey = 'idcategorie';
protected $fillable = ['nom', 'description'];
public function produits()
{
return $this->hasMany(Produit::class, 'idcategorie');
}
}
php<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Produit extends Model
{
protected $table = 'produits';
protected $primaryKey = 'idproduit';
protected $fillable = ['idcategorie', 'nom', 'prix', 'quantiteStock', 'marque'];
public function categorie()
{
return $this->belongsTo(Categorie::class, 'idcategorie');
}
public function ventes()
{
return $this->hasMany(Vente::class, 'idproduit');
}
}
php<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Vente extends Model
{
protected $table = 'ventes';
protected $primaryKey = 'idvente';
protected $fillable = ['idclient', 'idproduit', 'quantite', 'datevente'];
public function client()
{
return
$this->belongsTo(Client::class, 'idclient');}public function produit() {
return
$this->belongsTo(produit::class, 'idproduit');}}
ClientCntroller.php
- Next, create the controller using the following command in the terminal:
gophp artisan make:controller ClientController --resource --model=Client
This will generate a "ClientController.php" file in the "app/Http/Controllers" directory. Open this file and you will see a skeleton controller with empty methods for each of the CRUD operations.
Fill in each of the methods as follows:
index
: This method should return a view that lists all of the clients in the database.
phppublic function index()
{
$clients = Client::all();
return view('clients.index', compact('clients'));
}
create
: This method should return a view with a form for creating a new client.
phppublic function create()
{
return view('clients.create');
}
store
: This method should store the new client in the database and redirect back to the index page.
phppublic function store(Request $request)
{
$client = new Client;Il faut ajouter la valition
$client->nom = $request->nom;
$client->prenom = $request->prenom;
$client->save();
return redirect()->route('clients.index');
}
show
: This method should return a view with the details of a specific client.
phppublic function show(Client $client)
{
return view('clients.show', compact('client'));
}
edit
: This method should return a view with a form for editing a specific client.
phppublic function edit(Client $client)
{
return view('clients.edit', compact('client'));
}
update
: This method should update the specific client in the database and redirect back to the index page.
phppublic function update(Request $request, Client $client)
{
$client->nom = $request->nom;
$client->prenom = $request->prenom;
$client->save();
return redirect()->route('clients.index');
}
destroy
: This method should delete the specific client from the database and redirect back to the index page.
phppublic function destroy(Client $client)
{
$client->delete();
return redirect()->route('clients.index');
}
- Finally, define the routes for the controller in the "routes/web.php" file:
phpRoute::resource('clients', 'ClientController');