
লারাভেলের CRUD Operation
ধাপ ১ . ডাটাবেস কনফিগারেশন এবং কিছু সমাধান
প্রথমে, আপনার .env ফাইলটি খুলুন এবং DB_DATABASE, DB_USERNAME এবং DB_PASSWORD এই constant গুলোর default value গুলি পরিবর্তন করে আপনার database এর Database name, Database Username এবং Database password দিয়ে পরিবর্তন করুন।
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE= mamurjor_it → এটা নিজের মনের মতো নাম দিতে পারবেন ।
DB_USERNAME=database-user-name
DB_PASSWORD=
ধাপ ২. একটি Model এবং Migration তৈরি করে ফেলুন
টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি টাইপ করুন ঃ
php artisan make:model MamurjorCrud-m
এবার আপনি database থেকে tabel এর নামটা সিলেক্ট করলে নিচের মতো একটা ভিউ আসবে ⇒
public function up() {
Schema::create('mamurjorcruds', function (Blueprint $table) {
$table->id(); $table->string('name');
$table->string('email');
$table->string('address');
$table->timestamps();
});
}
টার্মিনাল খুলুন নিম্নলিখিত কমান্ডটি টাইপ করুন:
php artisan migrate
App\Models থেকে MamurjorCrudএ নিচের কোডটি লেখি ঃ
class MamurjorCrud extends Model
{
use HasFactory;
protected $table = 'mamurjor_cruds';
protected $guarded = [];
}
ধাপ ৩.Create Routes
ফাইল open করুন এবং web.php ফাইলে নিজের কোডটি লেখুন তারপর laravel crud তৈরি করার জন্য Route থেকে web.php - use App\Http\Controllers/MamurjorCrudController;
Route::resource('mamurjor', MamurjorCrudController::class);
ধাপ ৪.রিসোর্স কন্ট্রোলার তৈরি
প্রথমে নিচের Command এর মাধ্যমে MamurjorCrudController নামের Controller টি তৈরী করে ফেলি।
php artisan make:controller
MamurjorCrudController -r
ধাপ ৫: Database এ Data Insert
Resource/View ভিতরে নিচের ফাইল গুলো তৈরি করি :
● Make Directory Name Companies
● index.blade.php
● create.blade.php
● edit.blade.php
Laravel দিয়ে ডাটাবেসে Data Insert করার জন্য প্রথমে আপনাকে আপনার view folder এ একটা Insert Form তৈরী করতে হবে। আমরা এখানে bootstrap এর সাহায্যে একটা form তৈরী করব। ফর্ম তৈরির জন্য নিচের কোড টি ব্যবহার করুন। আর আপনার তৈরী ফর্ম টির নাম রাখুন form.blade.php নামে।
১.index.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link href="{{asset('admin_assets/vendor/fontawesome-free
/css/all.min.css')}}" rel="stylesheet" type="text/css">
<!-- Custom CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com
/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<!-- Page Heading -->
<div class="container mt-2">
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Laravel 9 CRUD Example Tutorial</h2>
</div>
<div class="pull-right mb-2">
<a class="btn btn-success" href="{{ route('mamurjor.create') }}"> Create
</a>
</div>
</div>
</div>
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<table class="table table-bordered">
<tr>
<th>S.No</th>
<th>Name</th>
<th>Email</th>
<th>Address</th>
<th width="280px">Action</th>
</tr>
@foreach ($mamurjor as $key => $value)
<tr>
<td>{{ $key + 1 }}</td>
<td>{{ $value->name }}</td>
<td>{{ $value->email }}</td>
<td>{{ $value->address }}</td>
<td class="d-flex">
<a class="btn btn-primary mr-3"
href="{{ route('mamurjor.edit', $value->id) }}">Edit</a>
<form action="{{ route('mamurjor.destroy', $value->id) }}" method="Post">
@csrf
@method('DELETE')
<button type="submit" class="btn
btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
{{ $mamurjor->links() }}
</body>
</html>
এখন যদি আপনি আপনার browser এ http://127.0.0.1:8000/mamurjor লিখেন, তাহলে নিচের মতো রেজাল্ট দেখতে পারবেন।
২.create.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link href="{{asset('admin_assets/vendor/
fontawesome-free/css/all.min.css')}}" rel="stylesheet" type="text/css">
<!-- Custom CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com
/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<!-- Page Heading -->
<div class="container mt-2">
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left mb-2">
<h2>Add Member</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{{ route('mamurjor.index')}}"> Back</a>
</div>
</div>
</div>
@if(session('status'))
<div class="alert alert-success mb-1 mt-1">
{{ session('status') }}
</div>
@endif
<form action="{{ route('mamurjor.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Name:</strong>
<input type="text" name="name" class="form-control" placeholder=" Name">
@error('name')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Email:</strong>
<input type="email" name="email" class="form-control" placeholder=" Email">
@error('email')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Address:</strong>
<input type="text" name="address" class="form-control" placeholder=" Address">
@error('address')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<button type="submit" class="btn btn-primary
ml-3">Submit</button>
</div>
</form>
</body>
</html>
“নোট: এখানে একটা বিষয় লক্ষ্য করবেন , আমরা form এর ভিতরে @csrf; blade syntax ব্যবহার করেছি। কারণ আমাদের form টির method হিসেবে দেওয়া আছে POST , আর লারাভেল post method এ কোনো form csrf টোকেন ছাড়া allow করেনা। আর এই কাজটি security পারপাস এ করা হয়। ”
উপরে ছবিতে create এ ক্লিক করলে তাহলে নিচের মতো রেজাল্ট দেখতে পারবেন।
ডাটা দিয়ে যদি Submit এ ক্লিক করলে তাহলে নিচের মতো রেজাল্ট দেখতে পারবেন।
৩.edit.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link href="{{asset('admin_assets/vendor/
fontawesome-free/css/all.min.css')}}" rel="stylesheet" type="text/css">
<!-- Custom CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/
bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<!-- Page Heading -->
<div class="container mt-2">
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Edit mamurjor</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{{ route('mamurjor.index') }}" enctype="multipart/form-data">
Back</a>
</div>
</div>
</div>
@if (session('status'))
<div class="alert alert-success mb-1 mt-1">
{{ session('status') }}
</div>
@endif
<form action="{{ route('mamurjor.update', $mamurjor->id) }}" method="POST" enctype="multipart/form-data">
@csrf
@method('PUT')
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Name:</strong>
<input type="text" name="name" value="{{ $mamurjor->name }}" class="form-control"
placeholder="mamurjor name">
@error('name')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Email:</strong>
<input type="email" name="email" class="form-control" placeholder="mamurjor Email"
value="{{ $mamurjor->email }}">
@error('email')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Address:</strong>
<input type="text" name="address" value="{{ $mamurjor->address }}" class="form-control"
placeholder="mamurjor Address">
@error('address')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<button type="submit" class="btn btn-primary ml-3">Submit</button>
</div>
</form>
</div>
</body>
</html>
ফ্রম এ কোন কিছুerror থাকলে তা দেখার জন্য নিচের কোডটি টাইপ করতে হবে -
@error('name')
@enderror
app/Http/controllers এ যান এবং MamurjorCrudController.php নিচের কডোটি লেখুন ঃ
namespace App\Http\Controllers;
use App\Models\MamurjorCrud;
use Illuminate\Http\Request;
class MamurjorCrudController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$mamurjor =
MamurjorCrud::orderBy('id','desc')->paginate(5);
return view('crud.index',compact('mamurjor'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('crud.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required',
'address' => 'required'
]);
MamurjorCrud::create([
'name' =>$request->name,
'email'=>$request->email,
'address'=>$request->address,
]);
return redirect()->route('mamurjor.index')
->with('success','Registration has been created
successfully.');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$mamurjor = MamurjorCrud::find($id);
return view('crud.edit',compact('mamurjor'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$mamurjor = MamurjorCrud::find($id);
$request->validate([
'name' => 'required',
'email' => 'required',
'address' => 'required'
]);
$mamurjor->update([
'name' =>$request->name,
'email'=>$request->email,
'address'=>$request->address,
]);
return redirect()->route('mamurjor.index')
->with('success','Update
successfully.');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$mamurjor = MamurjorCrud::find($id);
$mamurjor->delete();
return back()
->with('success','User has been deleted
successfully');
}
}
ধাপ ৬ ঃ টার্মিনাল র্মি খুলনু নিম্নলিখিত কমান্ডটি টাইপ করুন:
php artisan serve