编程语言
首页 > 编程语言> > php-摘要字段中的$many_many关系

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