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.

General Questions /

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

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

Model Admin - so many questions, so little documentation


Go to End
Reply


18 Posts   8191 Views

Avatar
EzraNaj

Community Member, 11 Posts

13 August 2010 at 1:43am

Hi swaiba,

I already found a solution.
I already have a class ItemAdmin extending ModelAdmin.
I created a class ItemAdmin_CollectionController extending ModelAdmin_CollectionController class.

Then I override ModelAdmin_CollectionController class by setting $collection_controller_class under class ItemAdmin
==
public static $collection_controller_class ="ItemAdmin_CollectionController"
==

I overloaded getSearchQuery() >>
=====
function getSearchQuery( $searchCriteria ) {

      $query = parent::getSearchQuery( $searchCriteria )->leftJoin( 'Category', 'Category.ID = Product.CategoryID' );
      return $query->orderby( 'Category.Name, Product.Name ASC' );

}
=====

It worked!

There's also another way though. You can extend TableListField and set $resultsTableClassName to class name you created.
You can then overload function getQuery() like this >>
===
function getQuery() {
   $this->customQuery->leftJoin( 'Category', 'Category.ID = Product.CategoryID');
   $this->customQuery->orderby( 'Category.Name, Product.Name ASC' );
return parent::getQuery();
}
===

I hope this helps to everyone who will encounter this issue.

Avatar
swaiba

Forum Moderator, 1799 Posts

13 August 2010 at 2:19am

Edited: 24/09/2010 12:53am

nice one! that is a very simple example - thanks for posting the solution :)

this has worked very well for what I wanted, I did also add a condition to ensure that the extra condirtion is only applied to the intended managed model...

if ($this->modelClass == 'DataObjectName')
{
$query->where[] = "myfield = xyz";
}

Go to Top