GridFieldOrderableRows::getSortTable PHP Method

getSortTable() public method

Gets the table which contains the sort field.
public getSortTable ( SS_List $list ) : string
$list SS_List
return string
    public function getSortTable(SS_List $list)
    {
        $field = $this->getSortField();
        if ($list instanceof ManyManyList) {
            $extra = $list->getExtraFields();
            $table = $list->getJoinTable();
            if ($extra && array_key_exists($field, $extra)) {
                return $table;
            }
        }
        $classes = ClassInfo::dataClassesFor($list->dataClass());
        foreach ($classes as $class) {
            if (singleton($class)->hasOwnTableDatabaseField($field)) {
                return $class;
            }
        }
        throw new Exception("Couldn't find the sort field '{$field}'");
    }

Usage Example

 /**
  * @covers GridFieldOrderableRows::getSortTable
  */
 public function testGetSortTable()
 {
     $orderable = new GridFieldOrderableRows();
     $parent = new GridFieldOrderableRowsTest_Parent();
     $parent->write();
     $this->assertEquals('GridFieldOrderableRowsTest_Ordered', $orderable->getSortTable($parent->HasMany()));
     $this->assertEquals('GridFieldOrderableRowsTest_Ordered', $orderable->getSortTable($parent->HasManySubclass()));
     $this->assertEquals('GridFieldOrderableRowsTest_Ordered', $orderable->getSortTable($parent->ManyMany()));
     $this->assertEquals('GridFieldOrderableRowsTest_Parent_ManyMany', $orderable->setSortField('ManyManySort')->getSortTable($parent->ManyMany()));
 }