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();