Laravel is a PHP framework that provides a lot of features and tools to build web applications quickly and easily. One of the most common operations in web applications is CRUD (Create, Read, Update, and Delete) operations. In this tutorial, we’ll create a simple CRUD application in Laravel that performs all these operations.
A. Fetch:
router:
use App\Http\Controllers\PlanController;
Route::view('services', 'services.index');
Route::get('admin/services-admin', function(){
return view('services.admin.index');
})->name('services-admin');
Route::get('admin/services-admin-plan', function(){
return view('services.admin.plan');
})->name('services-admin-plan');
Route::get('admin/all-plans', [PlanController::class, 'all_plans'])->name('all_plans');
Route::post('admin/save-plans', [PlanController::class, 'save_plans'])->name('save_plans');
Route::get('admin/edit-plans/{id}', [PlanController::class, 'edit_plans'])->name('edit_plans');
Route::post('admin/edit-plans', [PlanController::class, 'update_plans'])->name('update_plans');
Route::get('admin/delete-plans/{id}', [PlanController::class, 'delete_plans'])->name('delete_plans');
Controller:
function all_plans(Request $req){
$data = DB::table('service_plan')->get();
return view('services.admin.all-plans', ['data' => $data]);
}
view:
<div class="container mt-3 cards">
<h3>All Plans</h3>
<a href="{{route('services-admin-plan')}}" type="button" class="btn btn-primary" style="float:right;">Add Plans</a>
<br/>
@if (session('msg'))
<div class="alert alert-success">
{{ session('msg') }}
</div>
@endif
<table class="table table-light">
<thead>
<tr>
<th style="font-weight:900; font-size:17px; color:#333">S.No</th>
<th style="font-weight:900; font-size:17px; color:#333">Title</th>
<th style="font-weight:900; font-size:17px; color:#333">Cost</th>
<th style="font-weight:900; font-size:17px; color:#333">Storage</th>
<th style="font-weight:900; font-size:17px; color:#333">Emails</th>
<th style="font-weight:900; font-size:17px; color:#333">Domain</th>
<th style="font-weight:900; font-size:17px; color:#333">Support</th>
<th style="font-weight:900; font-size:17px; color:#333">Bandwidth</th>
<th style="font-weight:900; font-size:17px; color:#333">Action</th>
</tr>
</thead>
<tbody>
@foreach($data as $key => $d)
<tr>
<td>{{$key+1}}</td>
<td>{{$d->plan_title}}</td>
<td>{{$d->plan_cost}}</td>
<td>{{$d->plan_storage}}</td>
<td>{{$d->plan_email}}</td>
<td>{{$d->plan_domain}}</td>
<td>{{$d->plan_free_support}}</td>
<td>{{$d->plan_bandwidth}}</td>
<td>
<a href="admin/edit-plans/{{$d->id}}" class="btn btn-success">Edit</a>
<a href="admin/delete-plans/{{$d->id}}" class="btn btn-danger">Delete</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<style>
th{
font-size:22px;
font-weight:900;
color:black;
text-align:center;
}
</style>
B. Insert:
view:
<div id="main" class="container">
<a type="button" href="{{route('all_plans')}}" class="btn btn-primary" style="position:relative; float:right;">All Plans</a>
<form action="{{route('save_plans')}}" method="post" enctype="multipart/form-data">
<center><h2>Register New Plan</h2></center>
@if (session('msg'))
<div class="alert alert-success">
{{ session('msg') }}
</div>
@endif
@csrf
<div class="form-group">
<label>Plan Title</label>
<input class="form-control" type="text" placeholder="silver, gold, etc" name="plan_title" />
@error('plan_title')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Cost / Year</label>
<input class="form-control" type="number" placeholder="10$ / year" name="plan_cost" />
@error('plan_cost')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Storage (in GB)</label>
<input class="form-control" type="number" placeholder="10 GB" name="plan_storage" />
@error('plan_storage')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Emails</label>
<input class="form-control" type="number" placeholder="10 Emails" name="plan_email" />
@error('plan_email')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Domains</label>
<input class="form-control" type="number" placeholder="10 domains" name="plan_domain" />
@error('plan_domain')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Free Support (In months)</label>
<input class="form-control" type="number" placeholder="1 month" name="plan_free_support" />
@error('plan_free_support')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Bandwidth</label>
<input class="form-control" type="number" placeholder="1 GB" name="plan_bandwidth" />
@error('plan_bandwidth')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<button type="submit" class="btn btn-success">Register</button>
</form>
controller:
function save_plans(Request $req){
$validated = $req->validate([
'plan_title'=>'required',
'plan_cost'=>'required',
'plan_storage' => 'required',
'plan_email' => 'required',
'plan_domain' => 'required',
'plan_free_support' => 'required',
'plan_bandwidth' => 'required'
]);
$plan_title = $req->plan_title;
$plan_cost = $req->plan_cost;
$plan_storage = $req->plan_storage;
$plan_email = $req->plan_email;
$plan_domain = $req->plan_domain;
$plan_free_support = $req->plan_free_support;
$plan_bandwidth = $req->plan_bandwidth;
$query = DB::table('service_plan')->insert([
'plan_title' => $plan_title,
'plan_cost' => $plan_cost,
'plan_storage' => $plan_storage,
'plan_email' => $plan_email,
'plan_domain' => $plan_domain,
'plan_free_support' => $plan_free_support,
'plan_bandwidth' => $plan_bandwidth,
]);
return back()->with('msg','Your data has been saved!');
}
C. Edit:
controller:
function edit_plans(Request $req, $id){
$data = DB::table('service_plan')->where('id', $id)->get();
return view('services.admin.edit-plans', ['data' => $data]);
}
view:
<?php foreach($data as $d){
$plan_title = $d->plan_title;
$plan_cost = $d->plan_cost;
$plan_storage = $d->plan_storage;
$plan_email = $d->plan_email;
$plan_domain = $d->plan_domain;
$plan_free_support = $d->plan_free_support;
$plan_bandwidth = $d->plan_bandwidth;
$id = $d->id;
}
?>
<div class="page-content-wrapper">
<div class="page-content " style="min-height: 100vh">
<ol class="breadcrumb" v-pre>
<li class="breadcrumb-item active">Plan Setting</li>
</ol><br/><br/><br/>
<!-- page content start from here -->
<div id="main" class="container">
<a type="button" href="{{route('all_plans')}}" class="btn btn-primary" style="position:relative; float:right;">All Plans</a>
<form action="{{route('update_plans')}}" method="post" enctype="multipart/form-data">
<center><h2>Update Plan</h2></center>
@if (session('msg'))
<div class="alert alert-success">
{{ session('msg') }}
</div>
@endif
@csrf
<div class="form-group">
<label>Plan Title</label>
<input type="hidden" name="id" value="{{$id}}">
<input class="form-control" type="text" placeholder="silver, gold, etc" name="plan_title" value="{{$plan_title}}" />
@error('plan_title')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Cost / Year</label>
<input class="form-control" type="number" placeholder="10$ / year" name="plan_cost" value="{{$plan_cost}}" />
@error('plan_cost')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Storage (in GB)</label>
<input class="form-control" type="number" placeholder="10 GB" name="plan_storage" value="{{$plan_storage}}" />
@error('plan_storage')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Emails</label>
<input class="form-control" type="number" placeholder="10 Emails" name="plan_email" value="{{$plan_email}}" />
@error('plan_email')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Domains</label>
<input class="form-control" type="number" placeholder="10 domains" name="plan_domain" value="{{$plan_domain}}" />
@error('plan_domain')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Free Support (In months)</label>
<input class="form-control" type="number" placeholder="1 month" name="plan_free_support" value="{{$plan_free_support}}" />
@error('plan_free_support')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<div class="form-group">
<label>Bandwidth</label>
<input class="form-control" type="number" placeholder="1 GB" name="plan_bandwidth" value="{{$plan_bandwidth}}" />
@error('plan_bandwidth')
<div class="alert alert-danger">{{$message}}</div>
@enderror
</div>
<button type="submit" class="btn btn-success">Update</button>
</form>
controller:
function update_plans(Request $req){
$validated = $req->validate([
'plan_title'=>'required',
'plan_cost'=>'required',
'plan_storage' => 'required',
'plan_email' => 'required',
'plan_domain' => 'required',
'plan_free_support' => 'required',
'plan_bandwidth' => 'required'
]);
$plan_title = $req->plan_title;
$plan_cost = $req->plan_cost;
$plan_storage = $req->plan_storage;
$plan_email = $req->plan_email;
$plan_domain = $req->plan_domain;
$plan_free_support = $req->plan_free_support;
$plan_bandwidth = $req->plan_bandwidth;
$query = DB::table('service_plan')->where('id', $req->id)->update([
'plan_title' => $plan_title,
'plan_cost' => $plan_cost,
'plan_storage' => $plan_storage,
'plan_email' => $plan_email,
'plan_domain' => $plan_domain,
'plan_free_support' => $plan_free_support,
'plan_bandwidth' => $plan_bandwidth,
]);
return back()->with('msg','Your data has been updated!');
}
D. Delete:
controller:
function delete_plans(Request $req, $id){
$data = DB::table('service_plan')->where('id', $id)->delete();
return back()->with('msg','Your data has been deleted successfully!');
}