বাংলায় PHP LARAVEL FRAMEWORK পর্ব-১৪:Insert, Update and Delete with Laravel Query Builder

Insert, Update and Delete with Laravel Query Builder

Laravel ১৪ তম পর্বে আপনাকে স্বাগতম। এই পর্বটি বুঝতে হলে আপনাকে অবশ্যই আমাদের এর আগের পর্ব অর্থাৎ ১০ তম পর্বটি পড়ে আসতে হবে। বিশেষ ভাবে Query Builder নিয়ে কাজ করার পূর্ব প্রস্তুতি এই পার্ট টুকু দেখে নিতে হবে। আজকের পর্বে আমরা Laravel Framework এ Insert, Update and Delete এই বিষয় গুলো দেখব।

Inserts

Database এর এক বা একাধিক table এ Data Insert করার জন্য আপনি Laravel Framework এর Query Builder এ Insert Method ব্যবহার করতে পারেন। Insert Method এ আপনি সরাসরি associative array পাঠিয়ে column এবং value হিসেবে Data Insert করতে পারেন। অর্থাৎ আপনি যদি একটা associative array পাঠান , সেক্ষেত্রে আপনার array এর string key টা আপনার table এর column হিসেবে ব্যবহৃত হবে, এবং value ঐ column এর value হিসেবে Insert হবে। আরো ভালোভাবে বুঝার জন্য আপনার getqueryController class এ নিচের কোডটি লিখুন :

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class getqueryController extends Controller
{
    public function index(){
        $data=DB::table('students')->insert(
            ['name' => 'Sahab Uddin', 'email' => 'sahabuddin@satech360.com']);
 
       echo $data?"Insert Success":"Data Insert Fail";
    }
}

এখন আপনি যদি আপনার ব্রাউজার এ http://localhost:8000/getquery হিট করেন তাহলে নিচের মত ফলাফল দেখাবে :

Laravel Data Insert with Query Builder

আবার আপনি চাইলে অনেক গুলো row এর data একসাথে Insert করতে পারেন। আরো ভালোভাবে বুঝার জন্য আপনার getqueryController class এ নিচের কোডটি লিখুন :

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class getqueryController extends Controller
{
    public function index(){
        $data=DB::table('students')->insert([
            ['name' => 'Sohag', 'email' => 'sohag@mail.com'],
            ['name' => 'Noman', 'email' => 'noman@mail.com']
        ]);
 
       echo $data?"Insert Success":"Data Insert Fail";
    }
}

এখন আপনি যদি আপনার ব্রাউজার এ http://localhost:8000/getquery হিট করেন তাহলে নিচের মত ফলাফল দেখাবে :

Laravel Data Insert with Query Builder

Auto-Incrementing IDs

আপনার database table এ যদি কোনো column এ auto_increment করা থাকে তাহলে আপনার সর্বশেষ Insert করা row এর id বের করার জন্য Laravel Query Builder এর insertGetId Method রয়েছে। আরো ভালোভাবে বুঝার জন্য আপনার getqueryController class এ নিচের কোডটি লিখুন :

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class getqueryController extends Controller
{
    public function index(){
        $id = DB::table('students')->insertGetId(
            ['name' => 'Farhan', 'email' => "farhan@donald.com"]
        );
 
       echo "Your Last Inserted Id: $id";
    }
}

এখন আপনি যদি আপনার ব্রাউজার এ http://localhost:8000/getquery হিট করেন তাহলে নিচের মত ফলাফল দেখাবে :

Laravel Last Insert Id

Updates

Insert Method এর মতোই Database এর এক বা একাধিক table এ Data Update করার জন্য আপনি Laravel Framework এর Query Builder এ Update Method ব্যবহার করতে পারেন। Update Method এ আপনি সরাসরি associative array পাঠিয়ে column এবং value হিসেবে Data Update করতে পারেন। অর্থাৎ আপনি যদি একটা associative array পাঠান , সেক্ষেত্রে আপনার array এর string key টা আপনার table এর column হিসেবে ব্যবহৃত হবে, এবং value ঐ column এর value হিসেবে Update হবে। তবে সে ক্ষেত্রে আপনাকে অবশ্যই where clause ব্যবহার করতে হবে। আরো ভালোভাবে বুঝার জন্য আপনার getqueryController class এ নিচের কোডটি লিখুন :

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class getqueryController extends Controller
{
    public function index(){
        $data=DB::table('students')
            ->where('id', 1)
            ->update(['name' => 'Kabir Hossain']);
 
       echo $data?"Data Update Success":"Data Update Fail";
    }
}

এখন আপনি যদি আপনার ব্রাউজার এ http://localhost:8000/getquery হিট করেন তাহলে নিচের মত ফলাফল দেখাবে :

Update Data with Laravel Query Builder

Updating JSON Columns

আপনি চাইলে json column ও update করতে পারেন। তবে সে ক্ষেত্রে appropriate key সিলেক্ট করার জন্য ” ->” এই sign টি ব্যবহার করতে হবে। আরো ভালোভাবে বুঝার জন্য নিচের কোডটি দেখুন :

DB::table('users')
            ->where('id', 1)
            ->update(['options->enabled' => true]);

Increment & Decrement

একটা নির্দিষ্ট column এর value increment এবং decrement এর জন্য আপনি Manual Update query এর পরিবর্তে increment/decrement method ব্যবহার করতে পারেন। দুটি মেথড এ atleast একটি argument দিতে হয়। আর দ্বিতীয় argument টি optional, অর্থাৎ কত করে increment হবে সেটা control করার জন্য।

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class getqueryController extends Controller
{
    public function index(){
        $data=DB::table('students')->increment('visits', 2);
 
       echo $data?"Data Update Success":"Data Update Fail";
    }
}

Deletes

Insert এবং Update Method এর মতোই Database এর এক বা একাধিক table এ Data Delete করার জন্য আপনি Laravel Framework এর Query Builder এ Delete Method ব্যবহার করতে পারেন। Delete Method দিয়ে আপনি একসাথে সব data delete করে দিতে পারেন। আবার where clause ব্যবহার করে একটি নির্দিষ্ট row delete করতে পারেন । আরো ভালোভাবে বুঝার জন্য আপনার getqueryController class এ নিচের কোডটি লিখুন :

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class getqueryController extends Controller
{
    public function index(){
        $result=DB::table('courses')->delete();
        $result2=DB::table('students')->where('id', '=', 4)->delete();
       echo $result?"All Data Delete Success<br>":" All Data Delete Fail<br>";
       echo $result2?"Data Delete Success":" Data Delete Fail";
    }
}

এখন আপনি যদি আপনার ব্রাউজার এ http://localhost:8000/getquery হিট করেন তাহলে নিচের মত ফলাফল দেখাবে :

Delete Data using Laravel Query Builder

আপনি যদি পুরো টেবিলের মুছে ফেলতে চান, অর্থাৎ , যা সব সারি মুছে ফেলবে এবং auto increment id reset করবে , তাহলে আপনি Query Builder এর truncate Method ব্যবহার করতে পারেন, আরো ভালোভাবে বুঝার জন্য নিচের কোডটি দেখুন :

DB::table('users')->truncate();