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   1269 Views

Avatar
Entar

Community Member, 19 Posts

12 October 2009 at 1:29pm

Edited: 12/10/2009 1:30pm

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

Forum Moderator, 5513 Posts

12 October 2009 at 5:24pm

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

Avatar
Entar

Community Member, 19 Posts

13 October 2009 at 12:41am

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

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

Avatar
Entar

Community Member, 19 Posts

13 October 2009 at 12:46am

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

Forum Moderator, 801 Posts

16 October 2009 at 8:40am

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 :)