gpt4 book ai didi

php - 汇总字段中的 $many_many 关系

转载 作者:可可西里 更新时间:2023-11-01 00:57:29 25 4
gpt4 key购买 nike

我有两个类,它们之间有 $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 对象链接到当前对象,系统不知道显示这三个列的标题。

我们可以做的是创建一个函数来返回一个字符串来显示我们想要显示的数据。

以下代码是为 Silverstripe 3 编写的。

class Table1 extends DataObject
{
private static $db = [
'Title' => 'Varchar(32)',
];

private static $many_many = [
'Columns' => 'Table2',
];

private static $field_labels = [
'ColumnsString' => 'Columns',
];

private static $summary_fields = [
'Title',
'ColumnsString',
];

public function ColumnsString()
{
return implode(', ', $this->Columns()->column('Title'));
}
}

class Table2 extends DataObject
{
private static $db = [
'Title' => 'Varchar(32)',
];

private static $belongs_many_many = [
'Columns' => 'Table1',
];
}

关于php - 汇总字段中的 $many_many 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com