লারাভেলের CRUD Operation

লারাভেলের CRUD Operation

Laravel এ পর্বে আপনাকে স্বাগতম। আজকে আমরা দেখব কিভাবে Laravel এর শুধু মাত্র route, view এবং Controller ব্যবহার করে একটা 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')

 

{{ $message}}

 

@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

 

1 Comments

Brittany Black 2 weeks ago
Veniam at aliqua N

আপনার মতামতটি আমাদের জানান

শেয়ার করুন
টেগ
রিলেটেড ব্লগ
  • কিভাবে একজন প্রফেশনাল ডেভেলপার হবেন ?
    কিভাবে একজন প্রফেশনাল ডেভেলপার হবেন ?
    আরো পড়ুন
  • কিভাবে একজন প্রফেশনাল  ফ্রন্টইন্ড ডেভেলপার হবেন ?
    কিভাবে একজন প্রফেশনাল ফ্রন্টইন্ড ডেভেলপার হবেন ?
    আরো পড়ুন
  • বর্তমানে ওয়েব ডিজাইনেএন্ড ডেভেলপমেন্ট সেক্টরের এক হট নাম ওয়ার্ডপ্রেস
    বর্তমানে ওয়েব ডিজাইনেএন্ড ডেভেলপমেন্ট সেক্টরের এক হট নাম ওয়ার্ডপ্রেস
    আরো পড়ুন
  • ওয়ার্ডপ্রেস ইউজার রোল ম্যানেজমেন্ট
    ওয়ার্ডপ্রেস ইউজার রোল ম্যানেজমেন্ট
    আরো পড়ুন
  • লারাভেলের CRUD Operation
    লারাভেলের CRUD Operation
    আরো পড়ুন
  • আইপি  দিয়ে কীভাবে দেশ, শহরের নাম এবং ঠিকানা  বের করা যায় ।
    আইপি দিয়ে কীভাবে দেশ, শহরের নাম এবং ঠিকানা বের করা যায় ।
    আরো পড়ুন
  • কমান্ড লাইন ব্যবহার করে লারাভেল ক্যাশ ক্লিয়ার করার পদ্ধতি
    কমান্ড লাইন ব্যবহার করে লারাভেল ক্যাশ ক্লিয়ার করার পদ্ধতি
    আরো পড়ুন