2 Stimmen

doctrine 2 join problem [mit xml mappers]

Ich versuche, zwei Tabellen zu verbinden, bleibe aber beim Schreiben der korrekten XML-Mapper stecken (Einrichtung und Entitätszugriff getestet und funktioniert gut)

  • Basierend auf MySQL, Doctrine 2.0.4 und ZF-1.11
  • Ich verwende den XmlDriver( 'path \to\mappers );

Abfrage

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

Mapper

<?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>

Aber mit allen möglichen Beziehungen (ich werde hier müde :) bekomme ich immer das gleiche Problem: Die Eigenschaft der verbundenen Entität wird nicht gefunden:

Doktrin \ORM\Mapping\MappingException - Grundstücksstraße existiert nicht

0voto

Richard Punkte 412

Sie haben eine Zielentität für Ihr Straßenfeld angegeben, müssen aber eine Zuordnung zurück zur Zielentitätstabelle, in diesem Fall "Adressen", angeben. Bei Verwendung von Doctrine 2 XML Mapping wäre dies:

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

Dabei wird davon ausgegangen, dass die Identitätsspalte in Ihrer Adresstabelle den Namen "id" trägt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X