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

时间:2019-07-26 10:43:51

标签: silverstripe silverstripe-4

我正在从事SilverStripe项目。现在,我试图从数组创建DataObject实例。这就是我的创造方式。

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

对象已创建。问题是当我尝试访问对象的Title值时。我这样打印出“标题”字段。

echo $dataObject->Title;

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

1 个答案:

答案 0 :(得分:0)

我们必须创建自己的自定义类,并扩展DataObjectDataObject没有Title字段,Body字段,Intro字段,甚至没有用于存储数据的数据库表。

例如,我们可以将我们的课程称为Course

use SilverStripe\ORM\DataObject;

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

然后,我们可以如下使用Course类:

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

$course->write();

echo $course->Title;