2

Doctrine を使用するプロジェクトに取り組んでいます。そこで私は Doctrine を学び始め、簡単なテストを書き、最初から行き詰まりました。私は以前にたくさんの CakePHP アプリを開発したことがあり、ケーキの焼き方については良い考えを持っています。

テスト用の mysql データベースとその中に 2 つのテーブルがあります。最初にすべてのモデル クラスを生成し、それらを MVC アプリのコントローラーに CRUD に含めたいと考えています。

Composer を使用して Doctrine をインストールし、プロジェクト フォルダー内に /vendor というフォルダーを取得しました。プロジェクトフォルダー内に新しいbootstrap.phpを作成しました

/vendor
/bootstrap.php 

bootstrap.php 内のコードは

<?php

// bootstrap.php
require_once "vendor/autoload.php";

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

$paths = array("/path/to/entities-or-mapping-files");
$isDevMode = false;

// the connection configuration
$dbParams = array(
    'driver' => 'pdo_mysql',
    'user' => 'root',
    'password' => '',
    'dbname' => 'test',
);

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$em = EntityManager::create($dbParams, $config);

古いバージョンに Doctrine_Core::generateModelsFromDb というメソッドがあるようです。

基本的なモデルから始めて、それらを他の PHP ファイルに含めて CRUD する方法を知りたいだけです。

4

1 に答える 1

6

データベースから一連のエンティティ クラスとマッピング情報を生成する必要があることを理解しました。Doctrine では、エンティティ クラスとそれらのマッピング情報の両方が必要です。マッピング情報は基本的に、.yml または .xml ファイルの集まりです。どちらも、Doctrine が提供するツールを使用してデータベースから生成できます。これは通常、プロジェクトの開始時に 1 回行われます。Doctrine は、マッピング情報から、コードで使用できる PHP クラスを自動的に生成できます (エンティティの永続化など)。マッピング情報は、クラスの疑似アノテーションとして追加することもできますが、私はその経験がないので、それについては説明しません。

あなたが探しているコマンドは

php doctrine orm:convert-mapping --from-database yml /path/to/mapping-path-converted-to-yml

これは、Doctrine がデータベースにアクセスするように設定済みであることを前提としています。

これが完了したら、エンティティを生成できます

php doctrine orm:generate-entities

これにより、CRUD 操作に使用されるクラスが作成されます。クラスを使用するには、それらをコードに含めてから、EntityManager オブジェクトを使用してそれらを操作するだけです。

リバース エンジニアリングの詳細については、http: //docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/tools.html#reverse-engineeringをご覧ください。

ところで、MySQL Workbench ファイルにスキーマがある場合、エンティティ クラスとそこからマッピング情報を生成できるスクリプトがあります。

于 2013-08-06T02:26:22.317 に答える