Cara menggunakan Doctrine ORM untuk operasi pangkalan data dalam rangka kerja Symfony
Petikan:
Rangka kerja Symfony ialah rangka kerja PHP popular yang menyediakan banyak alatan dan komponen berkuasa untuk membina aplikasi web dengan cepat dan mudah. Salah satu komponen utama ialah Doctrine ORM, yang menyediakan cara yang elegan untuk mengendalikan operasi pangkalan data.
Artikel ini akan memperkenalkan secara terperinci cara menggunakan Doctrine ORM untuk melaksanakan operasi pangkalan data dalam rangka kerja Symfony. Kami akan membincangkan topik berikut:
.
Doctrine ny, kami Pertama anda perlu memasang Kumpulan Doktrin. Jalankan arahan berikut dalam terminal: .env
文件中添加以下内容:
composer require doctrine/doctrine-bundle
将username
、password
和db_name
替换为你自己的数据库连接信息。
然后,打开config/packages/doctrine.yaml
文件,添加以下配置:
DATABASE_URL=mysql://username:password@127.0.0.1:3306/db_name
二、实体类和数据库映射
Doctrine ORM使用实体类来代表数据库中的表。我们需要为每个表创建一个实体类,并将其与数据库进行映射。
首先,创建一个名为src/Entity
的目录。在该目录中创建一个名为User.php
的文件,并添加以下内容:
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
在上面的例子中,我们创建了一个名为User
的实体类,并将其与users
表进行了映射。id
属性被定义为自动生成的主键,name
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方法... // 其他业务逻辑... }
.env
: public function create() { $entityManager = $this->getDoctrine()->getManager(); $user = new User(); $user->setName('John Doe'); $entityManager->persist($user); $entityManager->flush(); return new Response('User created!'); }
nama pengguna
, kata laluan
dan db_name
dengan pangkalan data anda sendiri maklumat sambungan. Kemudian, buka fail config/packages/doctrine.yaml
dan tambah konfigurasi berikut:
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 Kelas entiti dan pemetaan pangkalan data
Doctrine ORM menggunakan kelas entiti untuk mewakili jadual dalam pangkalan data. Kita perlu mencipta kelas entiti untuk setiap jadual dan memetakannya dengan pangkalan data. Mula-mula, buat direktori bernamasrc/Entity
. Cipta fail yang dipanggil User.php
dalam direktori itu dan tambah kandungan berikut: 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
kelas Entiti dan memetakannya ke jadual pengguna
. Atribut id
ditakrifkan sebagai kunci utama yang dijana secara automatik dan atribut name
ialah rentetan.
3. Lakukan operasi 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)); }
Atas ialah kandungan terperinci Cara menggunakan Doctrine ORM untuk operasi pangkalan data dalam rangka kerja Symfony. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!