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 /

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

DataObject::get() on custom class

Go to End

2 Posts   958 Views


Community Member, 31 Posts

23 May 2012 at 1:36am

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




Forum Moderator, 5521 Posts

26 May 2012 at 8:10pm

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 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.