Doctrine Nedir ? Nasıl Kullanılır ? Symfony Doctrine Kullanımı

Merhabayın arkadaşlar :D

Bugün sizlere Symfony framework'ünün güçlü bir ORM (Object-Relational Mapping) kütüphanesi olan Doctrine ile nasıl çalışılacağını anlatacağım. Doctrine, veritabanı işlemlerini nesne odaklı bir şekilde gerçekleştirmeyi sağlayan bir araçtır. Bu, veritabanı tablolarını PHP nesneleri olarak düşünebileceğiniz anlamına gelir, böylece veritabanı işlemleri daha kolay hale gelir.

İlk olarak, Symfony projenize Doctrine'ü eklemelisiniz. Composer aracılığıyla bu işlemi gerçekleştirebilirsiniz:

composer require symfony/orm-pack


Bu, Symfony için gerekli olan tüm Doctrine bileşenlerini yükler. Ardından, Doctrine konfigürasyonunu yapılandırmak için config/packages/doctrine.yaml dosyasını kullanabilirsiniz. Bu dosya, veritabanı bağlantı ayarlarını, entity konfigürasyonlarını ve diğer ORM ayarlarını içerir.

Örneğin, MySQL veritabanına bağlanmak için bir yapılandırma şu şekilde olabilir:

doctrine:
    dbal:
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8mb4
        url: '%env(resolve:DATABASE_URL)%'
    orm:
        auto_generate_proxy_classes: true
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

Burada DATABASE_URL çevresel değişkeni Symfony'nin ortam dosyasında tanımlanmış olmalıdır.

Entity sınıflarını oluşturmak için, veritabanındaki her bir tablo için bir sınıf oluşturmanız gerekecek. Örneğin, bir User entity sınıfı oluşturalım.

// src/Entity/User.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity()
 * @ORM\Table(name="users")
 */
class User
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

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

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

    // Getters and setters...
}
}

Bu sınıf, users adında bir tabloya karşılık gelir. id, name ve email gibi sütunlar için alanları ve bunların tipini tanımlar.

Veritabanı işlemleri için Doctrine kullanmak oldukça basittir. Örneğin, bir kullanıcı oluşturmak için

$user = new User();
$user->setName('John Doe');
$user->setEmail('john@example.com');

$entityManager->persist($user);
$entityManager->flush();

Bu kod, User sınıfından bir nesne oluşturur, veritabanına ekler ve değişiklikleri kaydeder.

Doctrine ile sorgular yapmak için Doctrine Query Language (DQL) veya Doctrine Criteria kullanabilirsiniz. Örneğin:

$query = $entityManager->createQuery(
    'SELECT u
    FROM App\Entity\User u
    WHERE u.email = :email'
)->setParameter('email', 'zafer@kodlamaklazim.com');

$users = $query->getResult();

Bu, users tablosunda email alanı zafer@kodlamaklazim.com olan kullanıcıları seçer.

Son olarak, Doctrine, veritabanı şemalarını güncellemek için de bir araç sağlar:

php bin/console doctrine:schema:update --force

Bu komut, entity sınıflarınızdaki değişiklikleri algılar ve veritabanını buna göre günceller.

Doctrine kullanarak Symfony ile güçlü ve esnek veritabanı işlemleri gerçekleştirebilirsiniz. Bu sayede veritabanı işlemlerini nesne odaklı bir şekilde gerçekleştirebilir ve kodunuzu daha temiz ve bakımı kolay hale getirebilirsiniz.

YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.