1
0
mirror of synced 2025-01-19 06:51:40 +03:00

DDC-966 - Fix NOT NULL constraint SingleTableInheritance Generation using SchemaTool.

This commit is contained in:
Benjamin Eberlei 2011-01-02 10:18:02 +01:00
parent ed7ec261d0
commit c1edd5848f
3 changed files with 58 additions and 0 deletions

View File

@ -275,6 +275,10 @@ class SchemaTool
$pkColumns = array(); $pkColumns = array();
foreach ($class->fieldMappings as $fieldName => $mapping) { foreach ($class->fieldMappings as $fieldName => $mapping) {
if ($class->isInheritanceTypeSingleTable() && isset($mapping['inherited'])) {
continue;
}
$column = $this->_gatherColumn($class, $mapping, $table); $column = $this->_gatherColumn($class, $mapping, $table);
if ($class->isIdentifier($mapping['fieldName'])) { if ($class->isIdentifier($mapping['fieldName'])) {

View File

@ -19,6 +19,7 @@ class AllTests
{ {
$suite = new \Doctrine\Tests\DoctrineTestSuite('Doctrine Orm Functional Tools'); $suite = new \Doctrine\Tests\DoctrineTestSuite('Doctrine Orm Functional Tools');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\SchemaTool\CompanySchemaTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\SchemaTool\MySqlSchemaToolTest'); $suite->addTestSuite('Doctrine\Tests\ORM\Functional\SchemaTool\MySqlSchemaToolTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\SchemaTool\PostgreSqlSchemaToolTest'); $suite->addTestSuite('Doctrine\Tests\ORM\Functional\SchemaTool\PostgreSqlSchemaToolTest');
$suite->addTestSuite('Doctrine\Tests\ORM\Functional\SchemaTool\DDC214Test'); $suite->addTestSuite('Doctrine\Tests\ORM\Functional\SchemaTool\DDC214Test');

View File

@ -0,0 +1,53 @@
<?php
namespace Doctrine\Tests\ORM\Functional\SchemaTool;
use Doctrine\DBAL\Schema\Schema;
require_once __DIR__ . '/../../../TestInit.php';
/**
* Functional tests for the Class Table Inheritance mapping strategy.
*
* @author robo
*/
class CompanySchemaTest extends \Doctrine\Tests\OrmFunctionalTestCase
{
protected function setUp()
{
$this->useModelSet('company');
parent::setUp();
}
/**
* @group DDC-966
* @return Schema
*/
public function testGeneratedSchema()
{
$schema = $this->_em->getConnection()->getSchemaManager()->createSchema();
$this->assertTrue($schema->hasTable('company_contracts'));
return $schema;
}
/**
* @group DDC-966
* @depends testGeneratedSchema
*/
public function testSingleTableInheritance(Schema $schema)
{
$table = $schema->getTable('company_contracts');
// Check nullability constraints
$this->assertTrue($table->getColumn('id')->getNotnull());
$this->assertTrue($table->getColumn('completed')->getNotnull());
$this->assertFalse($table->getColumn('salesPerson_id')->getNotnull());
$this->assertTrue($table->getColumn('discr')->getNotnull());
$this->assertFalse($table->getColumn('fixPrice')->getNotnull());
$this->assertFalse($table->getColumn('hoursWorked')->getNotnull());
$this->assertFalse($table->getColumn('pricePerHour')->getNotnull());
$this->assertFalse($table->getColumn('maxPrice')->getNotnull());
}
}