minor relation fix
This commit is contained in:
parent
532d3da4f1
commit
84f764cf56
@ -212,6 +212,7 @@ class Doctrine_Relation_Parser
|
||||
$def = $this->completeDefinition($def);
|
||||
|
||||
if (isset($def['localKey'])) {
|
||||
|
||||
$rel = new Doctrine_Relation_LocalKey($def);
|
||||
} else {
|
||||
$rel = new Doctrine_Relation_ForeignKey($def);
|
||||
@ -382,7 +383,8 @@ class Doctrine_Relation_Parser
|
||||
$def['localKey'] = true;
|
||||
}
|
||||
} else {
|
||||
if ($def['local'] !== $this->_table->getIdentifier()) {
|
||||
if ($def['local'] !== $this->_table->getIdentifier() &&
|
||||
$def['type'] == Doctrine_Relation::ONE) {
|
||||
$def['localKey'] = true;
|
||||
}
|
||||
}
|
||||
|
@ -34,27 +34,37 @@ class Doctrine_Relation_OneToMany_TestCase extends Doctrine_UnitTestCase
|
||||
{
|
||||
public function prepareData()
|
||||
{ }
|
||||
|
||||
public function testRelationParsing()
|
||||
{
|
||||
$table = $this->conn->getTable('Entity');
|
||||
|
||||
$rel = $table->getRelation('Phonenumber');
|
||||
|
||||
|
||||
$this->assertTrue($rel instanceof Doctrine_Relation_ForeignKey);
|
||||
|
||||
$rel = $table->getRelation('Email');
|
||||
|
||||
|
||||
$this->assertTrue($rel instanceof Doctrine_Relation_LocalKey);
|
||||
}
|
||||
|
||||
public function testRelationParsing2()
|
||||
{
|
||||
$table = $this->conn->getTable('Phonenumber');
|
||||
|
||||
$rel = $table->getRelation('Entity');
|
||||
|
||||
|
||||
$this->assertTrue($rel instanceof Doctrine_Relation_LocalKey);
|
||||
}
|
||||
|
||||
public function testRelationParsing3()
|
||||
{
|
||||
$table = $this->conn->getTable('Policy');
|
||||
|
||||
$rel = $table->getRelation('PolicyAssets');
|
||||
|
||||
$this->assertTrue($rel instanceof Doctrine_Relation_ForeignKey);
|
||||
}
|
||||
public function testRelationSaving()
|
||||
{
|
||||
$e = new Entity();
|
||||
@ -67,3 +77,33 @@ class Doctrine_Relation_OneToMany_TestCase extends Doctrine_UnitTestCase
|
||||
$nr->Entity = $e;
|
||||
}
|
||||
}
|
||||
class Policy extends Doctrine_Record
|
||||
{
|
||||
public function setTableDefinition(){
|
||||
$this->setTableName('policies');
|
||||
$this->hasColumn('policy_number', 'integer', 11, array('unique' => true));
|
||||
}
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->hasMany('PolicyAsset as PolicyAssets', array('local' => 'policy_number',
|
||||
'foreign' => 'policy_number'));
|
||||
$this->index('policy_number_index', array('fields' => 'policy_number'));
|
||||
}
|
||||
}
|
||||
class PolicyAsset extends Doctrine_Record
|
||||
{
|
||||
public function setTableDefinition()
|
||||
{
|
||||
$this->setTableName('policy_assets');
|
||||
$this->hasColumn('policy_number', 'integer', 11);
|
||||
$this->hasColumn('value', 'float', 10, array ('notblank' => true,));
|
||||
}
|
||||
|
||||
public function setUp(){
|
||||
$this->hasOne('Policy', array('foreign' => 'policy_number',
|
||||
'local' => 'policy_number'));
|
||||
$this->index('policy_number_index', array('fields' => 'policy_number'));
|
||||
$this->index('vehicle_code_index', array('fields' => 'vehicle_code'));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user