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.

Customising the CMS

DataObject::get() on custom class


Reply

2 Posts   678 Views

Avatar
nekranox

23 May 2012 at 1:36am Community Member, 31 Posts

Hey guys,

We've created a class which extends page called DetailPropertyPage. It just has loads of extra frields and some one-to-many relationships to Images and DataObjects.

I'm writting a custom search function at the moment to return matching DataObjects.

Here is my code:

$properties = DataObject::get('DetailPropertyPage', $queryString, '`DetailPropertyPage`.`Price` ASC', '', '0, 30');

I know that $queryString is correct because if I paste it into phpMyAdmin then I get results but it always turns up NULL in SilverStripe. Am I using the wrong caller class?

Just in case it is useful, heres the typical contents for $queryString:

`DetailPropertyPage`.`Status`='S' and `DetailPropertyPage`.`PropertyType`='Terraced' and `DetailPropertyPage`.`Bedrooms`>=1 and `DetailPropertyPage`.`Price`>=50000 and `DetailPropertyPage`.`Price`<=150000

Thanks,

Robbie

Avatar
Willr

26 May 2012 at 8:10pm Forum Moderator, 5511 Posts

Using table names directly in the DataObject get is a little tricky as the table name for pages will actually be TableName_Live rather than TableName when viewing the published site. See https://github.com/silverstripe/silverstripe-forum/blob/master/code/ForumHolder.php#L345 for an example of the logic you need to include to get the right table for the query.

PROTIP you can use ?showqueries=1 to see the SQL queries SilverStripe is running. Use that to grab the SQL query running and double check that.