Commit 84f764cf authored by zYne's avatar zYne

minor relation fix

parent 532d3da4
......@@ -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'));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment