Skip to content

Loading…

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

Closed
doctrinebot opened this Issue · 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
@doctrinebot doctrinebot added the Bug label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.