mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Made has_one, has_many, and many_many methods more reliable
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.2.2@53068 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
1ccaefaf16
commit
4005bc6fc5
@ -935,16 +935,10 @@ class DataObject extends ViewableData implements DataObjectInterface {
|
||||
*/
|
||||
public function has_one($component = null) {
|
||||
$classes = ClassInfo::ancestry($this);
|
||||
$good = false;
|
||||
|
||||
foreach($classes as $class) {
|
||||
// Wait until after we reach DataObject
|
||||
if(!$good) {
|
||||
if($class == 'DataObject') {
|
||||
$good = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(in_array($class, array('Object', 'ViewableData', 'DataObject'))) continue;
|
||||
|
||||
if($component) {
|
||||
$candidate = eval("return isset({$class}::\$has_one[\$component]) ? {$class}::\$has_one[\$component] : null;");
|
||||
@ -993,16 +987,9 @@ class DataObject extends ViewableData implements DataObjectInterface {
|
||||
*/
|
||||
public function has_many($component = null) {
|
||||
$classes = ClassInfo::ancestry($this);
|
||||
$good = false;
|
||||
|
||||
foreach($classes as $class) {
|
||||
// Wait until after we reach DataObject
|
||||
if(!$good) {
|
||||
if($class == 'DataObject') {
|
||||
$good = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(in_array($class, array('ViewableData', 'Object', 'DataObject'))) continue;
|
||||
|
||||
if($component) {
|
||||
$candidate = eval("return isset({$class}::\$has_many[\$component]) ? {$class}::\$has_many[\$component] : null;");
|
||||
@ -1029,20 +1016,10 @@ class DataObject extends ViewableData implements DataObjectInterface {
|
||||
*/
|
||||
public function many_many($component = null) {
|
||||
$classes = ClassInfo::ancestry($this);
|
||||
$good = false;
|
||||
|
||||
foreach($classes as $class) {
|
||||
// Wait until after we reach DataObject
|
||||
if(!$good) {
|
||||
if($class == 'DataObject') {
|
||||
$good = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if($class == 'DataObject' || $class == 'ViewableData') {
|
||||
continue;
|
||||
}
|
||||
if(in_array($class, array('ViewableData', 'Object', 'DataObject'))) continue;
|
||||
|
||||
if($component) {
|
||||
// Try many_many
|
||||
|
Loading…
x
Reference in New Issue
Block a user