【问题标题】:Seed Silverstripe database种子银条数据库
【发布时间】:2013-01-04 14:49:33
【问题描述】:

是否可以像在 Rails 中那样“播种”数据库?我想将种子与图像对象管理器结合使用,以便按标题获取记录。

【问题讨论】:

标签: php database silverstripe


【解决方案1】:

不太清楚在这种情况下您所说的“种子”是什么意思。有一个 "data-generator" module 会写入随机数据,并对 ORM 列类型进行有根据的猜测。

【讨论】:

  • “种子”是指我想添加默认记录。所以在建库的时候会在(即标题: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 类上运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-09
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 2011-03-16
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多