PHP Professional,Laravel 5.6 Beginning to Advance এবং Zend Certified PHP Engineer (ZCPE ) Course এ সীমিত সংখ্যক আসন বাকি আছে। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

বাংলায় PHP LARAVEL FRAMEWORK পর্ব-১৮: Laravel Database Seeding

Laravel Database Seeding

Laravel Database Seeding

লারাভেল ফ্রেমওয়ার্ক এ Seeding বা Seeder কি?

Laravel Framework এ seeding হচ্ছে একটি স্বয়ংক্রিয় প্রক্রিয়া যা একটি অ্যাপ্লিকেশনের প্রাথমিক তথ্য (sample data) insert এর জন্য চালানো হয়। লারাভেল ফ্রেমওয়ার্ক এই কাজটি seeder class গুলোর মাধ্যমে করে থাকে। যদিও আপনি এটি Laravel Migration এর মাধ্যমে করতে পারেন কিন্তু এটি একটি bad practice. কারণ আপনি যত বার Migration run করবেন প্রত্যেক বারই একই স্যাম্পল Data আপনার টেবিল এ Insert হবে , যেটি আপনার প্রোডাকশন ডাটাকে interfere করবে। তা ছাড়া seeder class গুলোর মাধ্যমে আপনি স্যাম্পল ডাটা insert এর কাজটি প্রত্যেকটি টেবিল এর জন্য আলাদা আলাদা ভাবে করতে পারবেন। সব seed class ই database/seeds ফোল্ডারে সংরক্ষিত থাকে। seed ক্লাস গুলোকে আপনি যেকোনো নামে রাখতে পারেন। তবে কিছু convention ফলো করা উচিত, যেমন: UsersTableSeeder ইত্যাদি। বাই ডিফল্ট Laravel আপনার জন্য DatabaseSeeder class টি ডিফাইন করে রেখেছে। আর এই class এর call() Method দিয়ে অন্যান্য seed class গুলোকে run করতে পারেন এবং seeding অর্ডার কন্ট্রোল করতে পারবেন।

লারাভেল এ কিভাবে Seeder Generate করবেন?

Seeder Generate করার জন্য আপনাকে Laravel Artisan Command make:seeder এই কমান্ড টি রান করতে হবে। নিচে লক্ষ্য করুন:

php artisan make:seeder UsersTableSeeder
Generating Laravel Seeder

Generating Laravel Seeder

এখন আপনি database/seeds ফোল্ডারে আপনার seeder class টি দেখতে পাবেন ঠিক নিচের মতো :

Laravel Seeder Class Location

Laravel Seeder Class Location

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

কিভাবে একটি টেবিল এ dummy data Insert করার জন্য Seeder লিখবেন?

Seeder class এ শুধু মাত্র run নামে একটি default Method থাকবে , এই run মেথডের মাধ্যমেই আপনার Database এ Dummy Data Insert করতে হবে। আর এর জন্য আপনি Laravel এর Query Builder এর insert() Method ব্যবহার করতে পারেন। নিচে লক্ষ্য করুন :

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
        $users=[[
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ],
        [
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ],
        [
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]];
        
         DB::table('users')->insert($users);
    }
}

Seeder কিভাবে রান করবেন?

seeder লেখার পর এটি রান করার জন্য আপনাকে Composer autoloader কে dump-autoload command এর মাধ্যমে regenerate করতে হতে পারে।

composer dump-autoload

Output

Laravel Dump Autoload

Laravel Dump Autoload

autoload file গুলো regenerate হয়ে যাওয়ার পর, এখন আপনি চাইলে db::seed command এর মাধ্যমে সব গুলো seeder class রান করতে পারেন। এক্ষেত্রে অতিরিক্ত seeder class গুলো রান করার জন্য আপনাকে DatabaseSeeder class এর run() Method এর মধ্যে call() Method দিয়ে সব গুলো seed Class কে কল করে রাখতে হবে। নিচের উদাহরণ দেখুন:

/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    $this->call([
        UsersTableSeeder::class,
        PostsTableSeeder::class,
        CommentsTableSeeder::class,
    ]);
}

তারপর নিচের artisan command টি রান করতে হবে।

php artisan db:seed

আর যদি প্রত্যেকটি table এর আলাদা seeder রান করতে চান সে ক্ষেত্রে আপনাকে db::seed –class=YourSeederClassName command এর মাধ্যমে প্রত্যেকটি table এর আলাদা seeder রান করতে পারেন।

php artisan db:seed --class=UsersTableSeeder

Sample Dummy Data

Sample Dummy Data Using Laravel Seeder Class

Sample Dummy Data Using Laravel Seeder Class

এই ক্যাটাগরির অন্যান্য পোস্ট:

Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।
One comment to “বাংলায় PHP LARAVEL FRAMEWORK পর্ব-১৮: Laravel Database Seeding”
  1. ভাই আমি দুইটা বা তিনটা পোজেক্ট একসাথে একটা পোজেক্ট বানাতে চায়। সেক্ষেত্রে কিভাবে করলে সুবিধা হবে?

Leave a Reply

Your email address will not be published. Required fields are marked *