Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

All other Modules

Discuss all other Modules here.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

GIS: GeoPoint inheritance


Reply

5 Posts   1239 Views

Avatar
Entar

12 October 2009 at 1:29pm (Last edited: 12 October 2009 1:30pm), Community Member, 19 Posts

hi everybody!

I have a strange behaviour in datamodel and property inheritance, here's what I am trying to do.

class BaseClass extends DataObject {
   static $db = array(
      'Point' => 'GeoPoint',
      'Text' => 'Varchar'
   );
}

class ChildClass extends BaseClass {
   public function getCMSFields(){
      print_r($this->Point); // empty
      print_r($this->Text); // it's ok, I see this property
   }
}

It is simplified example of what I am trying to do. This code always return empty object. I have this object entry in db with right Point data, but it always return me object with no coordinates or any data that exist in db. any ideas?

Avatar
Willr

12 October 2009 at 5:24pm Forum Moderator, 5511 Posts

Try Debug::show($this->dbObject('Point')); and see if that returns you the GeoPoint object.

Avatar
Entar

13 October 2009 at 12:41am Community Member, 19 Posts

   public function getCMSFields() {   
      Debug::show($this->dbObject('Point'));
   }

Didn't found better place for it, anyway - it shows nothing...

Avatar
Entar

13 October 2009 at 12:46am Community Member, 19 Posts

main problem is not that simple I posted before, but I think it is a cause of this:

[User Error] GeoPoint::setValue() - Bad value '\000\000\000\000\000\000\000�����T@�����K@'

Avatar
Ingo

16 October 2009 at 8:40am Forum Moderator, 801 Posts

Looks like a 2.3 specific bug, works fine in SilverStripe trunk - see this unit test: http://open.silverstripe.com/changeset/89142

The 2.3 bug is in DataObject->buildSQL(), where it uses databaseFields() instead of inheritedDatabaseFields(). The logic changed a bit in trunk, and I don't think its feasible to fix something so deep in the core for a late stage release branch. I'd suggest you patch your 2.3 installation for now, or wait for 2.4 :)