2

私はDoctrine 2.2に足を浸しており、それに慣れるためにDoctrineの公式サイトをフォローしています。この通常の mysql クエリを DQL に変換することに衝撃を受けました。

2 つのテーブルを持つサンプル データベースがあります。

**Table 1**
fruits:
fruit_id | fruit_name | fruit_type

**Table 2**
country:
country_id | country_name | fruit_id

果物の名前を付けて国名を取得したかったのです。通常、これはmysqlクエリで機能します

"SELECT c.country_name FROM country c
 INNER JOIN fruits f 
 WHERE f.fruit_name = 'Apple'";

doctrine を使用して、データベース内のテーブルのエンティティである Fruits と Country の 2 つのクラスを作成しました。私はこの方法で試しました:

$dql = "SELECT c.country_name FROM Model\Country c
        INNER JOIN Model\Fruits f ON (c.fruit_id = f.fruit_id)
        WHERE f.fruit_name = 'Apple'";
$query = $em->createQuery($dql);
$result = $query->getArrayResult();

これは私にエラーを投げています:

Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message '[Semantical Error] line 0, col 76 near 'f ON (c.fruit_id': Error: Identification Variable Model\Fruits used in join path expression but was not defined before.' in .......

誰かが教義 2.2 を使用して内部結合を記述する方法に光を当てることができれば、役に立ちます。

編集: Doctrine 2のプロである誰かが、最初のテーブルの主キーが別のテーブルの外部キーである2つのテーブルのイオンケースを使用して、1対多の関係の簡単な作業例を与えることができる場合。Docblock Annotationsありがとう

4

0 に答える 0