【问题标题】:Seed Silverstripe database种子银条数据库
【发布时间】:2013-01-04 14:49:33
【问题描述】:
是否可以像在 Rails 中那样“播种”数据库?我想将种子与图像对象管理器结合使用,以便按标题获取记录。
【问题讨论】:
标签:
php
database
silverstripe
【解决方案1】:
【讨论】:
-
“种子”是指我想添加默认记录。所以在建库的时候会在(即标题:Banner 1,链接:“google.com")中添加某些记录
【解决方案2】:
您可以通过设置$defaults 数组来设置页面$db 变量的默认值。
class Page extends SiteTree {
public static $db = array(
'Title' => 'Text',
'Description' => 'Text'
);
public static $defaults = array(
'Title' => 'Default Title',
'Description' => 'Default Description'
);
...
}
【解决方案3】:
根据您对 Ingo 的回答留下的评论,您想在您的页面类中添加一个 requireDefaultRecords() 方法。
以下内容来自最近的项目,并确保存在特定的用户组,但您可以对任何类型的 DataObject(例如 Page)执行相同操作。
public function requireDefaultRecords() {
// Make sure there is a readers security group
$group = Group::get('Group')->filter('Code', 'readers')
if ( !$group->exists() ) {
$group = Group::create(array('Title' => 'Readers'));
$group->write();
}
}
当您进行构建时,此函数会在所有 DataObject 类上运行。