I’ll demonstrate a crud operation using Laravel. This will give you a straightforward idea of laravel and CRUD operations
Let’s make a CRUD application by following a few simple steps.
First, you need to install a few things
- Node js
- Xampp
- Composer
Step 1, Install laravel
In order to build up a new Laravel version application, choose a folder and run the following command in your terminal or command prompt first:
composer create-project laravel/laravel crud
Step 2, Database configuration
For our CRUD application, we will create the database settings in the second step, including the database name, username, and password. So let’s open the.env file and enter all the information as follows:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crud
DB_USERNAME=root
DB_PASSWORD=
Step 3, Create Model
We’re going to make a crud for the product model. Therefore, we must build a model, controller, and migration of the “Product” model using the PHP artisan command. To start, run the line below:
php artisan make:model Product -mcr
This will create a model, migration, and a controller
Step 4, setting up the migration
Now we need to setup our migration file to create a product table
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('details');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
Now you can migrate your table using the following command
php artisan migrate:fresh
Step 5, Set up model
Once you’re done with migration it’s time to set up your model open your Product.php from the model folder and add these lines
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
protected $fillable = ['name','details'];
}
Step 6, Setup your functions in the controller
After your model setup, you need to create CRUD functions in your controller to perform your CRUD operations
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$product = Product::all();
$i = 1;
return view('index',compact('product','i'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$product = new Product();
$product->name = $request->name;
$product->details = $request->details;
$product->save();
return redirect()->back();
}
/**
* Display the specified resource.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function show(Product $product)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$product = Product::find($id);
return view('edit',compact('product'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$product = Product::find($id);
$product->name = $request->name;
$product->details = $request->details;
$product->update();
return redirect()->route('index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$product = Product::find($id);
$product->delete();
return redirect()->back();
}
}
Step 7, Setup routes
After you’re done with functions now you need to set up your routes
<?php
use App\Http\Controllers\ProductController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/',[ProductController::class,'index'])->name('index');
Route::post('/',[ProductController::class,'store'])->name('store');
Route::get('/edit/{id}',[ProductController::class,'edit'])->name('edit');
Route::post('/update/{id}',[ProductController::class,'update'])->name('update');
Route::get('/delete/{id}',[ProductController::class,'destroy'])->name('delete');
Step 8, Setup views
After setting up your routes create a two-blade file inside your view folder
Index.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CRUD</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
</head>
<body>
<div class="container mt-4">
<form action="{{route('store')}}" method="post">
{{csrf_field()}}
<div class="mb-3">
<label for="exampleFormControlInput1" class="form-label">Product name</label>
<input type="text" name="name" class="form-control" id="exampleFormControlInput1">
</div>
<div class="mb-3">
<label for="exampleFormControlTextarea1" class="form-label">Product Details</label>
<textarea class="form-control" name="details" id="exampleFormControlTextarea1" rows="3"></textarea>
</div>
<input type="submit" value="Submit" class="btn btn-primary">
</form>
</div>
<div class="container">
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Product Name</th>
<th scope="col">Product Details</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
@foreach($product as $item)
<tr>
<th scope="row">{{$i}}</th>
<td>{{$item->name}}</td>
<td>{{$item->details}}</td>
<td><a href="{{route('edit',$item->id)}}" class="btn btn-primary">Edit</a><a href="{{route('delete',$item->id)}}" class="btn btn-danger ms-2">Delete</a></td>
</tr>
<?php $i++ ?>
@endforeach
</tbody>
</table>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
</body>
</html>
edit.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CRUD</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
</head>
<body>
<div class="container mt-4">
<form action="{{route('update',$product->id)}}" method="post">
{{csrf_field()}}
<div class="mb-3">
<label for="exampleFormControlInput1" class="form-label">Product name</label>
<input type="text" name="name" class="form-control" id="exampleFormControlInput1" value="{{$product->name}}">
</div>
<div class="mb-3">
<label for="exampleFormControlTextarea1" class="form-label">Product Details</label>
<textarea class="form-control" name="details" id="exampleFormControlTextarea1" rows="3">{{$product->details}}</textarea>
</div>
<input type="submit" value="Submit" class="btn btn-primary">
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
</body>
</html>
Step 9 Result
You’ll find this end result if you do it correctly
Index page view
Adding a data
Editing a data
improve it
Thank you sure i will.
Extremely useful info specially the last part. I care for such information a lot. Thank you,
Thank you for your response
thank you for this fantastic post, I am glad I discovered this site on yahoo.
Thank you for your response
Awesome things here. I am very satisfied to peer your post.
Thank you for your response