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.

E-Commerce Modules

Discuss about the various e-commerce modules available:
Ecommerce, SS Shop, SilverCart and SwipeStripe
Alternatively, have a look the shared mailinglist.

Moderators: martimiz, Nicolaas, Sean, frankmullenger, biapar, Willr, Ingo, Jedateach, swaiba, simon_w

Add has_one and has_many to ProductGroup etc etc


4 Posts   1706 Views

Shane Garelja

15 March 2009 at 12:56pm Community Member, 18 Posts


Is it a reasonable suggestion that all modules declare the DB related statics to allow pages to be extended easily e.g. has_one, has_many - even if they are empty?

I have just spent a fairly long time trying to figure out why I was getting an error saving ~any~ page after adding an Object Decorator for the ProductGroup page in the ecommerce module. I wanted to have an image field via a has_one relationship but then couldn't figure out why I was getting error saving all the other page types. It was obviously due to the fact ProductGroup does not declare the has_one static so the new Image relationship was being added to Page which did not have the column ImageID. Resulting in the error: Unknown column 'ImageID' in 'field list' when saving other pages.

After adding an empty has_one static to the ProductGroup core file in ecommerce, all was well. But this obviously defeats the purpose of Object Decorators :)

I realise the cause is PHP related, not Silverstripe but it would be good if this was a recommendation to all module developers (if it isn't already).

Unless I'm completely barking up the wrong tree here and there is good reason why this isn't common practise...


15 March 2009 at 9:40pm Forum Moderator, 5511 Posts

All modules should include empty $has_one, $db, $many_many, $belongs_many_many and I guess $defaults and any other statics. While its not a written standard anywhere they probably all should.

Would be great if you could create a ticket on for someone to pick up on.


17 March 2009 at 1:05pm Forum Moderator, 5511 Posts

I have been informed that in the next version of SilverStripe you will not need to declare these things on the base class's to be able to override them. Now I guess we just have to wait :)

Shane Garelja

17 March 2009 at 1:41pm Community Member, 18 Posts

Aha! That's great news. Thanks for letting us know :)