>  기사  >  백엔드 개발  >  Symfony 프레임워크에서 데이터베이스 작업에 Doctrine ORM을 사용하는 방법

Symfony 프레임워크에서 데이터베이스 작업에 Doctrine ORM을 사용하는 방법

WBOY
WBOY원래의
2023-07-29 16:13:141574검색

Symfony 프레임워크에서 데이터베이스 작업을 위해 Doctrine ORM을 사용하는 방법

인용문:
Symfony 프레임워크는 웹 애플리케이션을 빠르고 쉽게 구축하기 위한 많은 강력한 도구와 구성 요소를 제공하는 널리 사용되는 PHP 프레임워크입니다. 핵심 구성 요소 중 하나는 데이터베이스 작업을 처리하는 우아한 방법을 제공하는 Doctrine ORM입니다.

이 글에서는 Doctrine ORM을 사용하여 Symfony 프레임워크에서 데이터베이스 작업을 수행하는 방법을 자세히 소개합니다. 우리는 다음 주제를 다룰 것입니다:

  1. Doctrine ORM 구성
  2. 엔터티 클래스 및 데이터베이스 매핑
  3. CRUD 작업 수행
  4. 쿼리 빌더 및 DQL 쿼리

1. Doctrine ORM 구성
Symfony에서 Doctrine ORM을 사용하려면 먼저 Doctrine Bundle을 설치해야 합니다. 터미널에서 다음 명령을 실행하세요:

composer require doctrine/doctrine-bundle

설치가 완료되면 Doctrine의 연결 정보를 구성해야 합니다. .env 파일에 다음을 추가하세요: .env文件中添加以下内容:

DATABASE_URL=mysql://username:password@127.0.0.1:3306/db_name

usernamepassworddb_name替换为你自己的数据库连接信息。

然后,打开config/packages/doctrine.yaml文件,添加以下配置:

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

二、实体类和数据库映射
Doctrine ORM使用实体类来代表数据库中的表。我们需要为每个表创建一个实体类,并将其与数据库进行映射。

首先,创建一个名为src/Entity的目录。在该目录中创建一个名为User.php的文件,并添加以下内容:

namespace AppEntity;

use DoctrineORMMapping as ORM;

/**
 * @ORMEntity
 * @ORMTable(name="users")
 */
class User
{
    /**
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     * @ORMColumn(type="integer")
     */
    private $id;

    /**
     * @ORMColumn(type="string")
     */
    private $name;

    // 添加其他属性和方法...

    // Getter和Setter方法...

    // 其他业务逻辑...
}

在上面的例子中,我们创建了一个名为User的实体类,并将其与users表进行了映射。id属性被定义为自动生成的主键,name

public function create()
{
    $entityManager = $this->getDoctrine()->getManager();

    $user = new User();
    $user->setName('John Doe');

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

    return new Response('User created!');
}

username, passworddb_name을 자신의 데이터베이스로 바꾸세요 연결 정보.


그런 다음 config/packages/doctrine.yaml 파일을 열고 다음 구성을 추가합니다.

public function read($id)
{
    $entityManager = $this->getDoctrine()->getManager();

    $user = $entityManager->getRepository(User::class)->find($id);

    if (!$user) {
        throw $this->createNotFoundException('User not found!');
    }

    return new Response('User name: ' . $user->getName());
}

2. 엔터티 클래스 및 데이터베이스 매핑

Doctrine ORM은 엔터티 클래스를 사용하여 데이터베이스의 테이블을 나타냅니다. 각 테이블에 대한 엔터티 클래스를 생성하고 이를 데이터베이스와 매핑해야 합니다.

먼저 src/Entity라는 디렉터리를 만듭니다. 해당 디렉터리에 User.php라는 파일을 만들고 다음 콘텐츠를 추가합니다.

public function update($id)
{
    $entityManager = $this->getDoctrine()->getManager();

    $user = $entityManager->getRepository(User::class)->find($id);

    if (!$user) {
        throw $this->createNotFoundException('User not found!');
    }

    $user->setName('Jane Doe');

    $entityManager->flush();

    return new Response('User updated!');
}

위의 예에서는 User Entity 클래스라는 파일을 만들고 이를 다음 항목에 매핑했습니다. users 테이블. id 속성은 자동으로 생성된 기본 키로 정의되고, name 속성은 문자열입니다.

3. CRUD 작업 수행

Doctrine ORM은 CRUD(생성, 읽기, 업데이트 및 삭제) 작업을 수행하는 다양한 간단한 방법을 제공합니다.

새 엔터티 생성:

public function delete($id)
{
    $entityManager = $this->getDoctrine()->getManager();

    $user = $entityManager->getRepository(User::class)->find($id);

    if (!$user) {
        throw $this->createNotFoundException('User not found!');
    }

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

    return new Response('User deleted!');
}

엔티티 읽기:

public function findByName($name)
{
    $entityManager = $this->getDoctrine()->getManager();

    $queryBuilder = $entityManager->createQueryBuilder();
    $queryBuilder->select('u')
        ->from(User::class, 'u')
        ->where('u.name = :name')
        ->setParameter('name', $name);

    $users = $queryBuilder->getQuery()->getResult();

    return new Response('Users found: ' . count($users));
}

엔티티 업데이트:

public function findByAge($age)
{
    $entityManager = $this->getDoctrine()->getManager();

    $query = $entityManager->createQuery(
        'SELECT u FROM AppEntityUser u WHERE u.age > :age'
    )->setParameter('age', $age);

    $users = $query->getResult();

    return new Response('Users found: ' . count($users));
}

엔티티 삭제:

rrreee🎜4 쿼리 빌더 및 DQL 쿼리🎜기본 CRUD 작업 외에도 쿼리 빌드 및 DQL을 사용할 수 있습니다. (교리 쿼리 언어) 복잡한 쿼리를 실행합니다. 🎜🎜Query Builder 예: 🎜rrreee 🎜DQL 쿼리 예: 🎜rrreee🎜결론: 🎜Symfony 프레임워크에서 Doctrine ORM을 사용하여 데이터베이스 작업을 수행하는 것은 매우 간단하고 효율적입니다. 이 문서에서는 Doctrine ORM을 구성하고, 엔터티 클래스를 생성하고, CRUD 작업을 수행하고, 쿼리 빌더 및 DQL 쿼리를 사용하는 방법을 설명합니다. 이 기사가 Symfony와 Doctrine ORM을 더 잘 사용하여 고품질 웹 애플리케이션을 개발하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 Symfony 프레임워크에서 데이터베이스 작업에 Doctrine ORM을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.