Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie Doctrine ORM für Datenbankoperationen im Symfony-Framework

So verwenden Sie Doctrine ORM für Datenbankoperationen im Symfony-Framework

WBOY
WBOYOriginal
2023-07-29 16:13:141670Durchsuche

So verwenden Sie Doctrine ORM für Datenbankoperationen im Symfony-Framework

Zitat:
Symfony-Framework ist ein beliebtes PHP-Framework, das viele leistungsstarke Tools und Komponenten zum schnellen und einfachen Erstellen von Webanwendungen bereitstellt. Eine der Schlüsselkomponenten ist Doctrine ORM, das eine elegante Möglichkeit zur Abwicklung von Datenbankoperationen bietet.

In diesem Artikel wird detailliert beschrieben, wie Sie mit Doctrine ORM Datenbankoperationen im Symfony-Framework ausführen. Wir werden die folgenden Themen behandeln:

  1. Konfigurieren von Doctrine ORM
  2. Entitätsklassen und Datenbankzuordnung
  3. Durchführen von CRUD-Operationen
  4. Abfrage-Builder und DQL-Abfragen

1. Konfigurieren von Doctrine ORM
Um Doctrine ORM in Symfony zu verwenden, müssen wir zuerst Sie müssen das Doctrine Bundle installieren. Führen Sie den folgenden Befehl im Terminal aus:

composer require doctrine/doctrine-bundle

Nachdem die Installation abgeschlossen ist, müssen wir die Verbindungsinformationen von Doctrine konfigurieren. Fügen Sie Folgendes zur Datei .env hinzu: .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!');
}

Ersetzen Sie Benutzername, Passwort und Datenbankname durch Ihre eigene Datenbank Verbindungsinformationen.


Dann öffnen Sie die Datei config/packages/doctrine.yaml und fügen Sie die folgende Konfiguration hinzu:

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. Entitätsklassen und Datenbankzuordnung

Doctrine ORM verwendet Entitätsklassen, um Tabellen in der Datenbank darzustellen. Wir müssen für jede Tabelle eine Entitätsklasse erstellen und diese der Datenbank zuordnen.

Erstellen Sie zunächst ein Verzeichnis mit dem Namen src/Entity. Erstellen Sie in diesem Verzeichnis eine Datei mit dem Namen User.php und fügen Sie den folgenden Inhalt hinzu:

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!');
}

Im obigen Beispiel haben wir eine Datei mit dem Namen User Entity class erstellt und sie dieser zugeordnet die users-Tabelle. Das Attribut id ist als automatisch generierter Primärschlüssel definiert und das Attribut name ist eine Zeichenfolge.

3. CRUD-Operationen durchführen

Doctrine ORM bietet viele einfache Methoden zum Ausführen von CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen).

Neue Entität erstellen:

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!');
}

Entität lesen:

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));
}

Entität aktualisieren:

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));
}

Entität löschen:

rrreee🎜4. Abfrage-Builder und DQL-Abfrage🎜Zusätzlich zu den grundlegenden CRUD-Operationen können wir auch Abfrageerstellung und DQL verwenden (Doctrine Query Language) zur Ausführung komplexer Abfragen. 🎜🎜Query Builder-Beispiel: 🎜rrreee 🎜DQL-Abfragebeispiel: 🎜rrreee🎜Fazit: 🎜Die Verwendung von Doctrine ORM im Symfony-Framework für Datenbankoperationen ist sehr einfach und effizient. In diesem Artikel wird erläutert, wie Sie Doctrine ORM konfigurieren, Entitätsklassen erstellen, CRUD-Operationen durchführen und Abfrage-Builder und DQL-Abfragen verwenden. Ich hoffe, dieser Artikel kann Ihnen dabei helfen, Symfony und Doctrine ORM besser zu nutzen, um hochwertige Webanwendungen zu entwickeln. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Doctrine ORM für Datenbankoperationen im Symfony-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn