微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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'
    );
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐