我有两个类,它们之间有$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'
);
}
答案 0 :(得分: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'
);
}