php-摘要字段中的$many_many关系
作者:互联网
我有两个类,它们之间具有$many_many和$belongs_many_many关系.我试图在包含$many_many的类中定义$summary_fields以显示类之间的关系,但该列(‘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'
);
}
解决方法:
问题是$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'
);
}
标签:silverstripe,php 来源: https://codeday.me/bug/20191027/1941225.html