Added testcase for #DDC-671
This commit is contained in:
parent
54476882c7
commit
9b03a1ecdd
@ -18,4 +18,70 @@ class YamlMappingDriverTest extends AbstractMappingDriverTest
|
||||
|
||||
return new YamlDriver(__DIR__ . DIRECTORY_SEPARATOR . 'yaml');
|
||||
}
|
||||
}
|
||||
public function testJoinTablesWithMappedSuperclassForYamlDriver() {
|
||||
$em = $this->_getTestEntityManager();
|
||||
$em->getConfiguration()->setMetadataDriverImpl(new \Doctrine\ORM\Mapping\Driver\YamlDriver(__DIR__ .'/yaml/'));
|
||||
$qb = $em->createQueryBuilder();
|
||||
|
||||
$qb->select('f')
|
||||
->from('Doctrine\Tests\ORM\Mapping\Page', 'f')
|
||||
->join('f.parentDirectory', 'd')
|
||||
->where(
|
||||
$qb->expr()->andx(
|
||||
$qb->expr()->eq('d.url', ':url'),
|
||||
$qb->expr()->eq('f.extension', ':extension')
|
||||
)
|
||||
)
|
||||
->setParameter('url', "test")
|
||||
->setParameter('filename', "filename")
|
||||
->setParameter('extension', "extension");
|
||||
|
||||
// Is there a way to generalize this more? (Instead of a2_., check if the table prefix in the ON clause is set within a FROM or JOIN clause..)
|
||||
$this->assertTrue(strpos($qb->getQuery()->getSql(), 'a2_.') === false);
|
||||
}
|
||||
}
|
||||
|
||||
class Directory extends AbstractContentItem {
|
||||
|
||||
protected $subDirectories;
|
||||
|
||||
/**
|
||||
* This is a collection of files that are contained in this Directory. Files, for example, could be Pages, but even other files
|
||||
* like media files (css, images etc) are possible.
|
||||
*
|
||||
* @var \Doctrine\Common\Collections\Collection
|
||||
* @access protected
|
||||
*/
|
||||
protected $containedFiles;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $url;
|
||||
}
|
||||
|
||||
class Page
|
||||
extends AbstractContentItem {
|
||||
|
||||
protected $extension = "html";
|
||||
}
|
||||
|
||||
abstract class AbstractContentItem {
|
||||
/**
|
||||
* Doctrine2 entity id
|
||||
* @var integer
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* The parent directory
|
||||
* @var Directory
|
||||
*/
|
||||
protected $parentDirectory;
|
||||
|
||||
/**
|
||||
* Filename (without extension) or directory name
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
}
|
||||
|
@ -0,0 +1,17 @@
|
||||
Doctrine\Tests\ORM\Mapping\AbstractContentItem:
|
||||
type: mappedSuperclass
|
||||
table: abstract_item
|
||||
id:
|
||||
id:
|
||||
type: integer
|
||||
unsigned: true
|
||||
generator:
|
||||
strategy: AUTO
|
||||
fields:
|
||||
# FilesystemIdentifier
|
||||
manyToOne:
|
||||
parentDirectory:
|
||||
targetEntity: Doctrine\Tests\ORM\Mapping\Directory
|
||||
joinColumn:
|
||||
name: parent_directory_id
|
||||
referencedColumnName: id
|
@ -0,0 +1,17 @@
|
||||
Doctrine\Tests\ORM\Mapping\Directory:
|
||||
type: entity
|
||||
table: core_content_directories
|
||||
fields:
|
||||
url:
|
||||
type: string
|
||||
length: 255
|
||||
oneToMany:
|
||||
subDirectories:
|
||||
targetEntity: Doctrine\Tests\ORM\Mapping\Directory
|
||||
mappedBy: parentDirectory
|
||||
cascade:
|
||||
[ all ]
|
||||
containedFiles:
|
||||
targetEntity: Doctrine\Tests\ORM\Mapping\Page
|
||||
mappedBy: parentDirectory
|
||||
cascade: [ remove ]
|
@ -0,0 +1,7 @@
|
||||
Doctrine\Tests\ORM\Mapping\Page:
|
||||
type: entity
|
||||
table: core_content_pages
|
||||
fields:
|
||||
extension:
|
||||
type: string
|
||||
length: 10
|
Loading…
Reference in New Issue
Block a user