Symfony 프레임워크에서 데이터베이스 작업을 위해 Doctrine ORM을 사용하는 방법
인용문:
Symfony 프레임워크는 웹 애플리케이션을 빠르고 쉽게 구축하기 위한 많은 강력한 도구와 구성 요소를 제공하는 널리 사용되는 PHP 프레임워크입니다. 핵심 구성 요소 중 하나는 데이터베이스 작업을 처리하는 우아한 방법을 제공하는 Doctrine ORM입니다.
이 글에서는 Doctrine ORM을 사용하여 Symfony 프레임워크에서 데이터베이스 작업을 수행하는 방법을 자세히 소개합니다. 우리는 다음 주제를 다룰 것입니다:
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
将username
、password
和db_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
, password
및 db_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)); }
위 내용은 Symfony 프레임워크에서 데이터베이스 작업에 Doctrine ORM을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!