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.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

Retreiving an object whose category is the same as the page title


Go to End


3 Posts   890 Views

Avatar
mschiefmaker

Community Member, 187 Posts

12 September 2009 at 11:34am

Hi

I am trying to retrieve an object that has a category the same as the page title. I am using the code

$MFoptions = DataObject::get_one("MFCategory", 'MFTitle='.$this->title);

but this errors with the message [User Error] Couldn't run query: SELECT `MFCategory`.*, `MFCategory`.ID, if(`MFCategory`.ClassName,`MFCategory`.ClassName,'MFCategory') AS RecordClassName FROM `MFCategory` WHERE (MFTitle=counselling) LIMIT 1 Unknown column 'counselling' in 'where clause'

So I get it is looking for a column called counselling cause it is not in '' but when I put it in '' ie $MFoptions = DataObject::get_one("MFCategory", 'MFTitle='.'$this->title');

it interprets the $this->title as a literal string. Please help, I know this must be simple to fix but I just can't work it out.

Thanks as always

MM

Avatar
bummzack

Community Member, 904 Posts

12 September 2009 at 9:48pm

You're close to the solution. The Title has to be wrapped in quotes for MySQL, but you're doing it wrong. Should be:

$MFoptions = DataObject::get_one("MFCategory", "MFTitle='" . $this->title . "'"); 

Or maybe better to read:

$title = $this->title;
$MFoptions = DataObject::get_one("MFCategory", "MFTitle='$title'"); 

Avatar
mschiefmaker

Community Member, 187 Posts

13 September 2009 at 11:28am

Hi Banal

Thanks for this. I knew it must be something along these lines but the combinations I had tried just didn't work

Cheers

MM