2

2 つのテーブルを結合しようとしましたが、正しい xml マッパーを書き込めませんでした (セットアップとエンティティ アクセスはテスト済みで、正常に動作します)。

  • MySQL、Doctrine 2.0.4 および ZF-1.11 に基づく
  • 私は XmlDriver( 'path\to\mappers ); を使用しています。

クエリ

$query = $em->createQueryBuilder()
    ->select('u')
    ->from('\Entities\Users', 'u')
    ->leftJoin('u.Addresses', 'a')
    ->getQuery();
$info = $query->getResult();

マッパー

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

  <entity name="Entities\Users" table="users">

    <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>

    <id name="id" type="integer" column="id">
      <generator strategy="IDENTITY"/>
    </id>

    <field name="name" type="string" column="name"/>

    <many-to-one field="street" target-entity="Addresses" />

  </entity>
</doctrine-mapping>

しかし、すべての可能な関係で (私はここで疲れています :) 私はいつも同じ問題を抱えています: 関連するエンティティのプロパティが見つかりません:

Doctrine\ORM\Mapping\MappingException - プロパティの通りが存在しません

4

1 に答える 1

0

ストリート フィールドにターゲット エンティティを指定しましたが、ターゲット エンティティ テーブル (この場合は「住所」) へのマッピングを提供する必要があります。Doctrine 2 XML マッピングを使用すると、次のようになります。

<many-to-one field="street" target-entity="Addresses" inversed-by="id" />

これは、アドレス テーブルの ID 列の名前が「id」であることを前提としています。

于 2011-05-08T21:10:41.867 に答える