2016-05-19 3 views
3

私は$many_many$belongs_many_manyという2つのクラスを持っています。私は$many_manyを含むクラスに$summary_fieldsを定義してクラス間の関係を表示しようとしましたが、その列( 'Column2.Column2')は空白の結果を表示します。このデータを正しく表示するには、どうすれば$summary_fieldsを設定しますか?

は、ここで問題が$many_many関係や$has_many関係が複数のオブジェクトにリンクすることができている私のコード

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

です。 GridFieldの複数の項目を表示する方法がわからないため、$many_manyまたは$has_many$summary_fieldsに配置することはできません。

例えば、Columns.Titleの場合、Columnsは現在のオブジェクトで$many_manyの関係になっています。 3つのオブジェクトが現在のオブジェクトにリンクされている場合、システムは3つの列のタイトルを表示することを認識しません。

私たちができることは、表示したいデータを表示する文字列を返す関数を作成することです。

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'の同じ行に表示されます。どのように 'ColumnsString'を繰り返して 'Title'を別の行に配置するのですか? –

関連する問題