从数组创建 DataObject 的 SilverStripe 始终显示标题字段的“#”/散列

SilverStripe creating DataObject from array is always showing "#"/ hash for the Title field

我正在从事 SilverStripe 项目。现在我正在尝试从数组创建 DataObject 实例。我就是这样创建的。

$dataObject = \SilverStripe\ORM\DataObject::create([
   'Title' => 'This is my title',
   'Body' => 'This is the body',
   'Intro' => 'Thi is the intro',
])

object 已创建。问题是当我尝试访问 object 的标题值时。我像这样打印出标题字段。

echo $dataObject->Title;

它打印出#/hash 而不是打印出Title 值。当我使用 toMap() 将它转换为数组时,我可以看到标题值在那里。但我想从 object 中获取标题值。出了什么问题,我该如何解决?

我们必须创建自己的自定义 class 来扩展 DataObject 并使用它。 DataObject 没有 Title 字段、Body 字段、Intro 字段甚至没有数据库 table 来存储数据。

例如我们可以调用 class Course:

use SilverStripe\ORM\DataObject;

class Course extends DataObject
{
    private static $db = [
        'Title' => 'Varchar(255)',
        'Body' => 'Text',
        'Intro' => 'Text',
    ];
}

然后我们可以使用我们的Courseclass如下:

$course = Course::create([
   'Title' => 'This is my title',
   'Body' => 'This is the body',
   'Intro' => 'Thi is the intro',
]);

$course->write();

echo $course->Title;