【问题标题】:SilverStripe creating DataObject from array is always showing "#"/ hash for the Title fieldSilverStripe 从数组创建 DataObject 始终显示标题字段的“#”/哈希
【发布时间】:2019-07-26 10:43:51
【问题描述】:

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

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

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

echo $dataObject->Title;

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

【问题讨论】:

    标签: php silverstripe silverstripe-4


    【解决方案1】:

    我们必须创建自己的自定义类来扩展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;
    

    【讨论】:

      猜你喜欢
      • 2011-04-20
      • 1970-01-01
      • 2011-05-08
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多