API Use mysql-safe table namespace separator

This commit is contained in:
Damian Mooyman 2017-03-22 14:47:35 +13:00 committed by Sam Minnée
parent d91c6659be
commit 1186f07830
3 changed files with 23 additions and 4 deletions

View File

@ -24,12 +24,10 @@ class DataObjectSchema
* Default separate for table namespaces. Can be set to any string for
* databases that do not support some characters.
*
* Defaults to \ to to conform to 3.x convention.
*
* @config
* @var string
*/
private static $table_namespace_separator = '\\';
private static $table_namespace_separator = '_';
/**
* Cache of database fields

View File

@ -9,6 +9,7 @@ use SilverStripe\ORM\DataObjectSchema;
use SilverStripe\ORM\Tests\DataObjectSchemaTest\BaseClass;
use SilverStripe\ORM\Tests\DataObjectSchemaTest\BaseDataClass;
use SilverStripe\ORM\Tests\DataObjectSchemaTest\ChildClass;
use SilverStripe\ORM\Tests\DataObjectSchemaTest\DefaultTableName;
use SilverStripe\ORM\Tests\DataObjectSchemaTest\GrandChildClass;
use SilverStripe\ORM\Tests\DataObjectSchemaTest\HasFields;
use SilverStripe\ORM\Tests\DataObjectSchemaTest\NoFields;
@ -31,7 +32,8 @@ class DataObjectSchemaTest extends SapphireTest
HasFields::Class,
NoFields::class,
WithCustomTable::class,
WithRelation::class
WithRelation::class,
DefaultTableName::class
);
/**
@ -49,6 +51,11 @@ class DataObjectSchemaTest extends SapphireTest
'DOSTWithCustomTable',
$schema->tableName(WithCustomTable::class)
);
// Default table name is FQN
$this->assertEquals(
'SilverStripe_ORM_Tests_DataObjectSchemaTest_DefaultTableName',
$schema->tableName(DefaultTableName::class)
);
}
/**

View File

@ -0,0 +1,14 @@
<?php
namespace SilverStripe\ORM\Tests\DataObjectSchemaTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\ORM\DataObject;
class DefaultTableName extends DataObject implements TestOnly
{
private static $db = [
'Title' => 'Varchar',
];
}