লারাভেল-৫ টিউটোরিয়াল (পর্ব-০৪) :: ডাটা ইনসার্ট ও ডাটা রিট্রিভ করা

বিভাগ: লারাভেল টুডু অ্যাপ্লিকেশন


গত পর্বে আমরা কন্ট্রোলার, রাউট ও ডাটা ইনসার্ট ও ভিউ করা জন্য একটি ভিউ তৈরী করেছিলাম। আজ আমরা ডাটাবেসে ডাটা ইনসার্ট করা এবং ডাটা কিভাবে তুলে এনে সাজিয়ে দেখাতে হয় তা দেখাব।

আমাদের যেহেতু ডাটাবেসের টেবলে কোন ডাটা নেই তাই আগে আমরা ইনসার্টের কাজটি করব। আমাদের ইনসাট করার জন্য একটি রাউট লিখতে হবে। রাউটটি আমরা বরাবরই  app/http ফোল্ডারের routes.php ফাইলে লিখব।

Route::post('/','TodoController@store');

ব্যাখ্যা: এই রাউটটিও আগেরটার মত মূল পাথের (মানে '/') জন্য লিখা। তবে আগের ছিল GET, এখন যেটি লিখলাম তা হল POST.
এই রাউটটি দ্বারা বুঝানো হচ্ছে মূল পাথে কেউ POST Request করলে আমরা এর কাজটি TodoController এর store ম্যাথড দ্বারা সম্পন্ন করব। এবার ডাটা ইনসার্ট করার জন্য TodoController এর store ম্যাথডে এই কোডটুকু লিখব।

public function store(Request $r)
  {
    $workName=$r->input('workName');
    $data=array(
            'work'=>$workName,
            'status'=>'Incomplete'
        );
        $response=App\Todo::create($data);
        if($response)
        {
            return redirect()->back();
        }
  }


এখন Todo মডেল ফাইলটি খুলে নিন্মোক্তভাবে লিখি

<?php namespace App;
use Illuminate\Database\Eloquent\Model;

class Todo extends Model {
    protected $table = 'todo';
    protected $fillable = ['work','status', 'created_at'];
} 

ব্যাখ্যা: মডেল protected $table ভ্যারিয়েবলে ডাটাবেসে আমাদের ট্যাবলের যেমন নাম রয়েছে ঠিক ঔরকম রাখা হয়েছে এবং protected $fillable এ আমরা ট্যাবলের যে ফিল্টগুলো ইউজার দ্বারা ফিলআপ হবে তা উল্লেখ করা হয়েছে।

এখন যদি আমরা ফরমটিতে কিছু লিখে Save বাটনে ক্লিক করি। দেখতে পাব আমাদের ডাটা টেবিলে ইনসার্ট হচ্ছে। ডাটা ইনসার্ট হচ্ছে কিনা ডাটাবেস চেক করলে আমরা বুঝতে পারব। এর পর যখন আমরা ডাটা দেখানোর কাজ করব তখন ডাটা ইনসার্ট হওয়ার সাথে সাথে আমরা তা ভিউতে দেখতে পাব।

ডাটা রিট্রিভ বা তুলে আনা:

ডাটা দেখানোর জন্য আমরা আগেই রাউট লিখেছিলাম। যদিও এটি দিয়ে আমরা শুধুমাত্র একটি ভিউকে দেখানোর কাজ করেছি।

Route::get('/','TodoController@index');

এখন কন্ট্রোলারে আমরা ডাটা দেখানোর জন্য index ম্যাথডে কোড নিচের কোডটুকু লিখব।

public function index()
{
  $data=Todo::all();
  return view('home')->with('data',$data);
}

ব্যাখ্যা: এইখানে আমরা Todo::all() দিয়ে todo ট্যাবলে থাকা সকল রেকর্ডকে তুলে আনছি। এটি আমাদের select * from todo কোয়ারী টা করে দিচ্ছে এবং ডাটা সহ রিটার্ন করছে। ডাটাগুলো আমরা $data নামক একটি ভেরিয়েবলে রাখছি। এই ডাটাসহ ভেরিয়েবলটি আমরা home.blade.php নামক ভিউতে পাঠিয়ে দিচ্ছি  যাতে আমরা ডাটাগুলোকে লুপ দিয়ে একটি টেবিলে সাজিয়ে দেখাতে পারি। যেহেতু আমরা ডাটাসহ ভিউ রিটার্ন করছি তাই home.blade.php ফাইলে আমরা এই $data নামে ভেরিয়েবলটি ব্যবহার করতে পারব।

এখন home.blade.php ফাইলটি খুলে টেবিলে রো'তে লুপ দিয়ে ডাটাগুলোকে দেখাতে পারব।

@foreach($data as $row){{$row-&gt;work}}{{$row-&gt;status}}
            <a href="#">Complete</a> | <a href="#">Edit</a> | <a href="#">Delete</a>
@endforeach

এখন যদি পেইজটি রিফ্রেস করা হয়, দেখবেন টেবিলে থাকা ডাটাগুলো দেখাচ্ছে।

 


এই রকম আরো পোষ্ট