[Tickets #14818] Rdo access problem in ONE_TO_ONE relationship
noreply at bugs.horde.org
noreply at bugs.horde.org
Wed May 23 09:42:11 UTC 2018
BITTE NICHT AUF DIESE NACHRICHT ANTWORTEN. NACHRICHTEN AN DIESE
E-MAIL-ADRESSE WERDEN NICHT GELESEN.
Ticket-URL: https://bugs.horde.org/ticket/14818
------------------------------------------------------------------------------
Ticket | 14818
Erstellt Von | birnbacs at gmail.com
Zusammenfassung | Rdo access problem in ONE_TO_ONE relationship
Warteschlange | Horde Framework Packages
Typ | Bug
Status | Unconfirmed
Priorität | 1. Low
Milestone |
Patch | 1
Zuständige |
------------------------------------------------------------------------------
birnbacs at gmail.com (2018-05-23 09:42) hat geschrieben:
When using a ONE_TO_ONE relationship in Rdo I could not access a
related data field. I tracked the problem down to Base.php, function
__get(). Consider lines 122 to 136 where a SQL search for the attached
record is conducted:
switch ($rel['type']) {
case Horde_Rdo::ONE_TO_ONE:
case Horde_Rdo::MANY_TO_ONE:
if (isset($rel['query'])) {
$query = $this->_fillPlaceholders($rel['query']);
$this->_fields[$field] = $m->findOne($query);
} elseif (!empty($this->{$rel['foreignKey']})) {
//$this->_fields[$field] =
$m->findOne($this->{$rel['foreignKey']});
$this->_fields[$field] =
$m->findOne(array($rel['foreignKey'] => $this->{$rel['foreignKey']}));
if (empty($this->_fields[$field])) {
throw new Horde_Rdo_Exception('The referenced
object with key ' . $this->{$rel['foreignKey']} . ' does not exist.
Your data is inconsistent');
}
} else {
$this->_fields[$field] = null;
}
break;
For unknown reasons everything works for a MANY_TO_ONE relationship,
using the same code.
Anyway, I used the available information to define a more specific
search in line 129:
$this->_fields[$field] = $m->findOne(array($rel['foreignKey'] =>
$this->{$rel['foreignKey']}));
and this made it work for all types of relationship.
More information about the bugs
mailing list