Make the new hasOne stuff work with identifiers
This commit is contained in:
parent
17787aa173
commit
a903c927c4
@ -883,7 +883,11 @@ abstract class Doctrine_Record extends Doctrine_Record_Abstract implements Count
|
|||||||
throw new Doctrine_Record_Exception("Couldn't call Doctrine::set(), second argument should be an instance of Doctrine_Record or Doctrine_Null when setting one-to-one references.");
|
throw new Doctrine_Record_Exception("Couldn't call Doctrine::set(), second argument should be an instance of Doctrine_Record or Doctrine_Null when setting one-to-one references.");
|
||||||
}
|
}
|
||||||
if ($rel instanceof Doctrine_Relation_LocalKey) {
|
if ($rel instanceof Doctrine_Relation_LocalKey) {
|
||||||
$this->set($rel->getLocal(), $value->rawGet($rel->getForeign()), false);
|
$foreign = $rel->getForeign();
|
||||||
|
if (!empty($foreign) && $foreign != $value->getTable()->getIdentifier())
|
||||||
|
$this->set($rel->getLocal(), $value->rawGet($foreign), false);
|
||||||
|
else
|
||||||
|
$this->set($rel->getLocal(), $value, false);
|
||||||
} else {
|
} else {
|
||||||
$value->set($rel->getForeign(), $this, false);
|
$value->set($rel->getForeign(), $this, false);
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ class Doctrine_Relation_LocalKey extends Doctrine_Relation
|
|||||||
public function fetchRelatedFor(Doctrine_Record $record)
|
public function fetchRelatedFor(Doctrine_Record $record)
|
||||||
{
|
{
|
||||||
$id = $record->get($this->definition['local']);
|
$id = $record->get($this->definition['local']);
|
||||||
|
|
||||||
if (empty($id) || ! $this->definition['table']->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
|
if (empty($id) || ! $this->definition['table']->getAttribute(Doctrine::ATTR_LOAD_REFERENCES)) {
|
||||||
$related = $this->getTable()->create();
|
$related = $this->getTable()->create();
|
||||||
} else {
|
} else {
|
||||||
@ -56,11 +56,11 @@ class Doctrine_Relation_LocalKey extends Doctrine_Relation
|
|||||||
->query($dql, array($id))
|
->query($dql, array($id))
|
||||||
->getFirst();
|
->getFirst();
|
||||||
|
|
||||||
if ( ! $related) {
|
if ( ! $related || empty($related)) {
|
||||||
$related = $this->getTable()->create();
|
$related = $this->getTable()->create();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$record->set($this->definition['local'], $related, false);
|
$record->set($this->definition['local'], $related, false);
|
||||||
|
|
||||||
return $related;
|
return $related;
|
||||||
@ -72,7 +72,7 @@ class Doctrine_Relation_LocalKey extends Doctrine_Relation
|
|||||||
* @param string $alias
|
* @param string $alias
|
||||||
*/
|
*/
|
||||||
public function getCondition($alias = null)
|
public function getCondition($alias = null)
|
||||||
{
|
{
|
||||||
if ( ! $alias) {
|
if ( ! $alias) {
|
||||||
$alias = $this->getTable()->getComponentName();
|
$alias = $this->getTable()->getComponentName();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user