Entities তৈরি এবং ম্যাপিং

Doctrine ORM এর মাধ্যমে ডেটাবেজ ইন্টিগ্রেশন - সিম্ফনি (Symfony) - Web Development

226

Symfony-এর Entities হল ক্লাস যা ডাটাবেসের টেবিল এর প্রতিনিধিত্ব করে। Symfony Doctrine ORM (Object-Relational Mapping) ব্যবহার করে, যার মাধ্যমে PHP অবজেক্টগুলোকে ডাটাবেস টেবিলের রেকর্ডে রূপান্তর করা হয়। এটি ডেটাবেসের সাথে কাজ করার জন্য একটি সহজ এবং প্রভাবশালী উপায় সরবরাহ করে।

এখানে Symfony-তে Entities তৈরি ও ম্যাপিং করার প্রক্রিয়া আলোচনা করা হয়েছে।


Entities কী?

Entity হল একটি PHP ক্লাস যা ডাটাবেস টেবিল বা ভিউ-এর সাথে সম্পর্কিত। এটি ডেটাবেসের রেকর্ড বা রো গুলোর প্রতিনিধিত্ব করে এবং Doctrine ORM এটি ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে।

Doctrine ORM (Object-Relational Mapping):

Doctrine ORM Symfony-তে ডাটাবেসের জন্য ব্যবহৃত একটি শক্তিশালী টুল। এটি PHP অবজেক্টগুলোকে ডাটাবেস টেবিলের রেকর্ডের সাথে মেলাতে সাহায্য করে এবং SQL কোড লেখার প্রয়োজন কমায়।

Doctrine-এ Entity সাধারণত একটি ক্লাস এবং এতে কিছু প্রপার্টি (fields) থাকে, যেগুলি ডাটাবেসের টেবিলের কলামের সাথে মেলে। Entity ক্লাসে Annotation বা XML/YAML কনফিগারেশন ব্যবহার করে ডাটাবেসের সাথে সম্পর্ক তৈরি করা হয়।


Symfony-তে Entity তৈরি করার প্রক্রিয়া

Symfony-তে Entity তৈরি করার জন্য make:entity কমান্ড ব্যবহার করা হয়।

Step 1: Entity তৈরি করা

Symfony CLI ব্যবহার করে নতুন Entity তৈরি করা:

php bin/console make:entity

এটি আপনাকে প্রশ্ন করবে:

  1. Entity এর নাম (যেমন: Product, User)
  2. Entity-তে ফিল্ড নাম এবং ধরন (যেমন: string, integer, date, boolean)

উদাহরণ:

php bin/console make:entity

Entity Name (e.g. Product): Product

New field name (press to stop adding fields): name

Field type (enter ? to see all types) [string]: string

Field length [255]: 100

এটি একটি Product Entity তৈরি করবে, যা name ফিল্ড ধারণ করবে এবং এটি string টাইপ হবে।

Step 2: Entity ক্লাস তৈরি

Entity ক্লাসটি src/Entity ডিরেক্টরিতে তৈরি হয়। উদাহরণস্বরূপ, যদি আপনি Product Entity তৈরি করেন, এটি দেখতে এমন হবে:

// src/Entity/Product.php
namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=100)
     */
    private $name;

    // Getter and Setter methods
    public function getId(): ?int
    {
        return $this->id;
    }

    public function getName(): ?string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;
        return $this;
    }
}
  • @ORM\Entity: এই অ্যনোটেশনটি Doctrine কে জানায় যে এটি একটি Entity এবং এটি ডাটাবেস টেবিলের সাথে সম্পর্কিত।
  • @ORM\Column: প্রতিটি প্রপার্টির জন্য এই অ্যনোটেশনটি কলামের ধরণ এবং বৈশিষ্ট্য নির্ধারণ করে। উদাহরণস্বরূপ, name প্রপার্টি string ধরনের কলাম হবে।
  • @ORM\Id এবং @ORM\GeneratedValue: এই অ্যনোটেশনগুলি id প্রপার্টি সিলেক্ট করে এবং এটিকে প্রধান কী (Primary Key) হিসেবে চিহ্নিত করে।

Step 3: ডাটাবেস মাইগ্রেশন (Database Migration)

Entity তৈরি করার পর, ডাটাবেসে টেবিলের জন্য মাইগ্রেশন তৈরি এবং প্রয়োগ করতে হয়। Symfony Doctrine-এর জন্য Doctrine Migrations সরবরাহ করে, যা ডাটাবেসের কাঠামো পরিচালনা করতে সহায়ক।

মাইগ্রেশন তৈরি করা:

php bin/console make:migration

এটি আপনার Entity থেকে ডাটাবেস মাইগ্রেশন ফাইল তৈরি করবে।

মাইগ্রেশন প্রয়োগ করা:

php bin/console doctrine:migrations:migrate

এটি তৈরি করা মাইগ্রেশন প্রয়োগ করবে এবং ডাটাবেসে Product টেবিল তৈরি করবে।


Entities ম্যাপিং (Mapping) এবং সম্পর্ক

Doctrine ORM Entities এর মধ্যে সম্পর্ক তৈরি করার জন্য অনেক ধরনের ম্যাপিং সমর্থন করে। কিছু সাধারণ সম্পর্কের উদাহরণ:

  1. One-to-One (এক-এক সম্পর্ক)
  2. One-to-Many (এক-many সম্পর্ক)
  3. Many-to-Many (many-many সম্পর্ক)

One-to-Many সম্পর্ক উদাহরণ:

এখানে, Product Entity এবং Category Entity এর মধ্যে One-to-Many সম্পর্ক তৈরি করা হচ্ছে।

// src/Entity/Category.php
namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\CategoryRepository")
 */
class Category
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string")
     */
    private $name;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Product", mappedBy="category")
     */
    private $products;
    
    // Getter and Setter methods
}
// src/Entity/Product.php
namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
 */
class Product
{
    // Other fields...

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Category", inversedBy="products")
     * @ORM\JoinColumn(nullable=false)
     */
    private $category;

    // Getter and Setter methods
}

এখানে:

  • @ORM\ManyToOne: Product Entity-কে Category Entity এর সাথে যুক্ত করছে। অর্থাৎ, একাধিক Product একটি Category এর অন্তর্গত হতে পারে।
  • @ORM\OneToMany: Category Entity-এ একাধিক Product থাকতে পারে।

Conclusion

Symfony-তে Entity তৈরি এবং ম্যাপিং একটি গুরুত্বপূর্ণ প্রক্রিয়া যা Doctrine ORM ব্যবহার করে ডাটাবেস টেবিলের সাথে PHP ক্লাসের সম্পর্ক তৈরি করে। এটি Model-View-Controller (MVC) ডিজাইন প্যাটার্নের অংশ হিসেবে ডাটাবেস পরিচালনা এবং কার্যকর ডেটা ইন্টারঅ্যাকশন সহজ করে তোলে। Entity তৈরি করার পর migrations ব্যবহার করে ডাটাবেসের কাঠামো পরিবর্তন করা যায় এবং এর মাধ্যমে ডাটাবেসের ডেটা সুরক্ষিতভাবে সংরক্ষিত ও পরিচালিত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...