2016-05-19 3 views
3

У меня есть два класса с $many_many и $belongs_many_many отношение между ними. Я попытался определить $summary_fields в классе, который содержит $many_many, чтобы отобразить связь между классами, но этот столбец («Column2.Column2») показывает пустые результаты. Как установить $summary_fields, чтобы отобразить эти данные правильно?

Вот мой код

class Table1 extends DataObject { 

    private static $db = array(
     'Column1' => 'Varchar(32)' 
    ); 

    private static $many_many = array (
     'Column2' => 'Table2' 
    ); 

    private static $summary_fields = array (
     'Column1' => 'Column 1', 
     'Column2.Column2' => 'Column 2' 
    ); 
} 

class Table2 extends DataObject { 

    private static $db = array(
     'Column2' => 'Varchar(32)' 
    ); 

    private static $belongs_many_many = array (
     'Column1' => 'Table1' 
    ); 
} 

ответ

4

Вопрос является $many_many отношения или $has_many отношения могут быть связаны с несколькими объектами. Мы не можем поместить $many_many или $has_many в $summary_fields, так как одна строка в GridField не знает, как отображать более одного элемента.

Например, у нас есть Columns.Title, где Columns является отношением $many_many к текущему объекту. Если у нас есть три объекта Columns, связанные с текущим объектом, система не знает, чтобы отображать заголовок из трех столбцов.

Что мы можем сделать, так это создать функцию для возврата строки, отображающей данные, которые мы хотим отобразить.

class Table1 extends DataObject { 

    private static $db = array(
     'Title' => 'Varchar(32)' 
    ); 

    private static $many_many = array(
     'Columns' => 'Table2' 
    ); 

    private static $field_labels = array(
     'ColumnsString' => 'Column' 
    ); 

    private static $summary_fields = array(
     'Title', 
     'ColumnsString' 
    ); 

    public function ColumnsString() { 
     $returnString = ''; 
     foreach ($this->Columns() as $column) { 
      $returnString .= $column->Title . ' '; 
     } 
     return $returnString; 
    } 
} 

class Table2 extends DataObject { 

    private static $db = array(
     'Title' => 'Varchar(32)' 
    ); 

    private static $belongs_many_many = array(
     'Columns' => 'Table1' 
    ); 
} 
+0

все столбцы «Столбцы» отображаются в одной строке «Название». Как поместить каждую «ColumnsString» в отдельные строки с повторением «Title»? –

Смежные вопросы