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

Avatar
Cy

Community Member, 11 Posts

24 October 2008 at 10:53am

Edited: 24/10/2008 11:12am

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

Community Member, 11 Posts

24 October 2008 at 6:51pm

This did the trick

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

Avatar
Phalkunz

69 Posts

27 October 2008 at 1:44pm

Edited: 27/10/2008 1:45pm

This is much cleaner

return $ByCategoryID->Books();