我正在从事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值。有什么问题,我该如何解决?
答案 0 :(得分:0)
我们必须创建自己的自定义类,并扩展DataObject
。 DataObject
没有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;