Jump to:

17452 Posts in 4473 Topics by 1971 members


SilverStripe Forums » Archive » Error: 'ParentID' appears twice

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

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

Page: 1
Go to End
Author Topic: 941 Views
  • Shane Garelja
    Community Member
    18 Posts

    Error: 'ParentID' appears twice Link to this post


    I'm trying to create a new dataobject called Category. You can have categories and sub-categories so I'm trying to code it so that a Category object can have another Category object as it's parent (has_one) or it can have multiple "Category" objects (has_many).

    I thought this would be quite simple but I can't work out how to get around this error (see title of post). This is what I have so far:

    class Category extends DataObject {
       static $db = array(
          'Name' => 'Text',      
          "Type" => "Enum('Business, Event, Community', 'Business')"      
       static $default_sort = "Name";

    static $has_one = array(   
    'Parent' => 'Category'
       static $has_many = array(
          'Children' => 'Category'

       function getCMSFields_forPopup() {
          $fields = new FieldSet();
          $fields->push( new TextField( 'Name' ) );      
          $fields->push( new DropdownField("ParentID", "Parent Category", array()));      
          $fields->push( new DropdownField("Type", "Type",
                'Business' => 'Business',
                'Event' => 'Event',
                'Community' => 'Community'
          return $fields;

    I can see that it's not happy with the field I'm trying to create where you select the parent Category (or leave empty if it's a top-level category). How do I do this?? Are there any examples I can look at in one of the modules? I looked at the Post object in the Forum module but it's slightly different.


Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.