проблема соединения doctrine 2 [с XML-картографами]

#xml #join #annotations #doctrine-orm #mapper

#xml #Присоединиться #примечания #доктрина-orm #картограф

Вопрос:

Я пытаюсь объединить две таблицы, но застрял в написании правильных XML-картографов (настройка и доступ к сущностям протестированы и работают нормально)

  • Основано на MySQL, Doctrine 2.0.4 и ZF-1.11
  • Я использую XmlDriver( ‘path to mappers);

Запрос

 $query = $em->createQueryBuilder()
    ->select('u')
    ->from('EntitiesUsers', '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="EntitiesUsers" 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 — Property street не существует

Ответ №1:

Вы указали целевой объект для своего поля street, но вы должны предоставить обратное отображение в таблицу целевых объектов, в данном случае «Адреса». Используя XML-сопоставление Doctrine 2, это было бы:

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

Это предполагает, что столбец identity в вашей таблице addresses называется ‘id’.