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.

Archive

Our old forums are still available as a read-only archive.

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

How to use ComponentSet?


Reply

3 Posts   2895 Views

Avatar
Cy

24 October 2008 at 10:53am (Last edited: 24 October 2008 11:12am), Community Member, 11 Posts

Books can have many categories. Categories can have many books.

I'd like to return a list of books from a specific category.

I have Book.php (extends Page), Category.php (extends DataObject).

BookHolder.php Controller

function getBooksByCategory($categoryID){
$whereStatement = "CategoryID ='". $categoryID ."'";
return DataObject::get("Books", $whereStatement); // Do I replace DataObject with ComponentSet?
}

The [url="http://doc.silverstripe.com/doku.php?id=componentset&s=componentset"]ComponentSet page[/url] in the documentation doesn't explain much.

I read that ComponentSet has to do with Many_Many relationships.

Any examples are greatly appreciated!

Thanks!

Avatar
Cy

24 October 2008 at 6:51pm Community Member, 11 Posts

This did the trick

function getBooksByCategory($categoryID){
$ByCategoryID = DataObject::get_one('Category', 'ID="'.$categoryID.'"');
if($ByCategoryID) {
return $ByCategoryID->getManyManyComponents('Books');
}

Avatar
Phalkunz

27 October 2008 at 1:44pm (Last edited: 27 October 2008 1:45pm), 69 Posts

This is much cleaner

return $ByCategoryID->Books();