DDC-1352: ErrorException: Undefined index in array #1970

Closed
doctrinebot opened this Issue Aug 30, 2011 · 2 comments

2 participants

@doctrinebot

Jira issue originally created by user sorenmh:

The following query:
"select c.id
from \Domain\Cuisine c
left join c.nameTranslation t
left join t.translationValues v
left join v.language l
where v.value = :name
and l.id = :languageId"

Results in a PHP ErrorException in \Doctrine\ORM\Query\SqlWalker line 745:
$assoc = ( ! $relation['isOwningSide']) ? $targetClass->associationMappings[$relation['mappedBy']] : $relation;

When I step through the execution, the array entry: $relation['mappedBy'] gets the following value: "Domain\Translation" in the scope where the error occurs.
$targetClass->associationMappings has the following indices: "translation" and "language" and this leads to a "Undefined index" error and the execution breaks. It means that I cannot execute DQL queries, which is critical for the application to run.

<entity name="Domain\Cuisine" table="Cuisine" repository-class="Infrastructure\Persistence\Doctrine\Repository\CuisineRepository">
    <id name="id" type="integer" column="Id">
        <generator strategy="AUTO"/>
    </id>
    <many-to-one target-entity="Domain\Translation" field="nameTranslation">
        <join-column name="NameTranslation_Id" referenced-column-name="Id"/>
    </many-to-one>
</entity>

 <entity name="Domain\Translation" table="Translations">
     <id name="id" type="integer" column="Id">
         <generator strategy="AUTO" />
     </id>
     <one-to-many target-entity="Domain\TranslationValue" mapped-by="Domain\Translation" field="translationValues" orphan-removal="true">
         <cascade>
             <cascade-all/>
         </cascade>
     </one-to-many>
 </entity>

<entity name="Domain\TranslationValue" table="TranslationValues">
    <id name="id" type="integer" column="Id">
     <generator strategy="AUTO" />
    </id>

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

    <many-to-one field="translation" target-entity="Domain\Translation">
        <join-column name="Translation_Id" nullable="false" referenced-column-name="Id" />
    </many-to-one>

    <many-to-one field="language" target-entity="Domain\Language">
        <join-column name="Language_Id" nullable="false" referenced-column-name="Id" />
    </many-to-one>
</entity>

 <entity name="Domain\Language" table="Languages" repository-class="\Infrastructure\Persistence\Doctrine\Repository\TranslationRepository">
     <id name="id" type="integer" column="Id">
         <generator strategy="AUTO" />
     </id>
     <field name="name" type="string" column="Name" />
     <field name="shortIsoCode" type="string" column="ShortIsoCode"/>
     <field name="longIsoCode" type="string" column="LongIsoCode"/>
     <field name="isDefault" type="boolean" column="IsDefault" />
 </entity>
@doctrinebot

Comment created by @guilhermeblanco:

Your mapping information is wrong.
The mappedBy value must reference the field name of the owning side, and not the class name.

Marking ticket as invalid.

@doctrinebot

Issue was closed with resolution "Invalid"

@doctrinebot doctrinebot closed this Dec 6, 2015
@doctrinebot doctrinebot added the Bug label Dec 7, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment