【问题标题】:$many_many relation in summary fields汇总字段中的 $many_many 关系
【发布时间】:2016-05-19 00:52:40
【问题描述】:

我有两个类,它们之间有 $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'
    );
}

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    问题是$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',
        ];
    }
    

    【讨论】:

    • 所有 'ColumnsString' 都出现在 'Title' 的同一行中。如何将每个“ColumnsString”放在单独的行中并重复“标题”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多