1
0
mirror of synced 2025-02-02 13:31:45 +03:00

[XML] Fix default value of many-to-many order-by to ASC

This commit is contained in:
Alex Denvir 2018-07-19 10:37:04 +01:00 committed by Luís Cobucci
parent ac505390dd
commit 72121c01ec
No known key found for this signature in database
GPG Key ID: EC61C5F01750ED3C
4 changed files with 47 additions and 1 deletions

View File

@ -549,7 +549,9 @@ class XmlDriver extends FileDriver
if (isset($manyToManyElement->{'order-by'})) {
$orderBy = [];
foreach ($manyToManyElement->{'order-by'}->{'order-by-field'} as $orderByField) {
$orderBy[(string) $orderByField['name']] = (string) $orderByField['direction'];
$orderBy[(string) $orderByField['name']] = isset($orderByField['direction'])
? (string) $orderByField['direction']
: Criteria::ASC;
}
$mapping['orderBy'] = $orderBy;
}

View File

@ -0,0 +1,15 @@
<?php
namespace Doctrine\Tests\Models\GH7316;
use Doctrine\Common\Collections\ArrayCollection;
class GH7316Article
{
private $tags;
public function __construct()
{
$this->tags = new ArrayCollection();
}
}

View File

@ -13,6 +13,7 @@ use Doctrine\Tests\Models\DDC3293\DDC3293UserPrefixed;
use Doctrine\Tests\Models\DDC889\DDC889Class;
use Doctrine\Tests\Models\Generic\SerializationModel;
use Doctrine\Tests\Models\GH7141\GH7141Article;
use Doctrine\Tests\Models\GH7316\GH7316Article;
use Doctrine\Tests\Models\ValueObjects\Name;
use Doctrine\Tests\Models\ValueObjects\Person;
@ -194,6 +195,20 @@ class XmlMappingDriverTest extends AbstractMappingDriverTest
);
}
public function testManyToManyDefaultOrderByAsc() : void
{
$class = new ClassMetadata(GH7316Article::class);
$class->initializeReflection(new RuntimeReflectionService());
$driver = $this->_loadDriver();
$driver->loadMetadataForClass(GH7316Article::class, $class);
self::assertEquals(
Criteria::ASC,
$class->getMetadataValue('associationMappings')['tags']['orderBy']['position']
);
}
/**
* @group DDC-889
* @expectedException \Doctrine\Common\Persistence\Mapping\MappingException

View File

@ -0,0 +1,14 @@
<?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="Doctrine\Tests\Models\GH7316\GH7316Article">
<many-to-many field="tags" target-entity="NoTargetEntity" mapped-by="noMappedByField">
<order-by>
<order-by-field name="position"/>
</order-by>
</many-to-many>
</entity>
</doctrine-mapping>