Php 在Silverstripe上,如何检索孙辈对象的数据列表,包括其外部字段?

Php 在Silverstripe上,如何检索孙辈对象的数据列表,包括其外部字段?,php,silverstripe,silverstripe-4,Php,Silverstripe,Silverstripe 4,我有一个类似于下面概述的设置 class A extends DataObject{ private static $many_many = array( 'Bs' => 'B' ); public function Grandchildren(){ // return grandchildren, including their many_many_extraFields data (ExtraData) } } cla

我有一个类似于下面概述的设置

class A extends DataObject{
    private static $many_many = array(
        'Bs' => 'B'
    );

    public function Grandchildren(){
        // return grandchildren, including their many_many_extraFields data (ExtraData)
    }
}

class B extends DataObject{
    private static $many_many = array(
        'Cs' => 'C'
    );

    private static $belongs_many_many = array(
        'As' => 'A'
    );

    private static $many_many_extraFields = array(
        'As' => array(
            'ExtraData' => 'Int'
        )
    );
}

class C extends DataObject{
    private static $db = array(
        'Name' => Varchar(255)
    );

    private static $belongs_many_many = array(
        'Bs' => 'B'
    );
}
我希望从a上的函数中检索所有B对象的C对象(此处称为孙子()

我无法找到两种可能的解决方案:

1-

2-


非常感谢您的帮助。

啊,对不起。答案比我想象的要简单得多。只是再次检查了数据列表文档中的所有方法

public function Grandchildren(){
    return $this->Bs()->relation('Cs');
}
将问题和答案留在这里,以帮助那些与我处于相同处境的人(因为我以前多次遇到过这个问题)

public function Grandchildren(){
    return C::get()->leftJoin('B_Cs', 'B_Cs.CID = C.ID')->where('B_Cs.AID = ' . $this->ID);
    // This works but doesn't contain the needed ExtraData.
}
public function Grandchildren(){
    return $this->Bs()->relation('Cs');
}