2013-01-21 1 views
2

레일에있는 것처럼 데이터베이스를 "시드"할 수 있습니까? 이미지 개체 관리자와 함께 씨앗을 사용하여 제목별로 레코드를 얻을 수 있습니다.시드 실버 스트라이프 데이터베이스

+0

[은세공 인] (https://github.com/unclecheese/SilverSmith) 프로젝트를 살펴볼 수 있습니다. 코드 스카 폴딩 외에도 [콘텐츠 시딩] (https://github.com/unclecheese/SilverSmith#content-seeding) 및 [콘텐츠 채우기] (https://github.com/unclecheese/SilverSmith#content-population) 기능이 있습니다. . – ivoba

+0

은세공 인은 시대에 뒤떨어져 (3.1로 포팅되지 않았습니다), 현재 유망한 것으로 보이는 시더 모듈이 있습니다 : https://github.com/Little-Giant/silverstripe-seeder. – wmk

답변

7

는 잉고의 대답에 남아있는 귀하의 의견을 바탕으로, 당신은 당신의 페이지 클래스에 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 클래스에서 실행됩니다.

+0

그게 바로 제가 한 일입니다. 고마워요! – jay

0

이 문맥에서 "씨앗"이 의미하는 바가 확실하지 않습니다. "data-generator" module은 ORM 열 유형에 대한 지식이있는 임의의 데이터를 씁니다.

+0

"시드"로 기본 레코드를 추가하려고합니다. 그래서 데이터베이스가 구축되면 특정 레코드가 추가됩니다 (예 : 제목 : 배너 1, 링크 : "http://www.google.com") – jay

1

$defaults 배열을 설정하여 $db 변수의 기본값을 설정할 수 있습니다.

class Page extends SiteTree { 

    public static $db = array(
     'Title' => 'Text', 
     'Description' => 'Text' 
    ); 

    public static $defaults = array(
     'Title' => 'Default Title', 
     'Description' => 'Default Description' 
    ); 

    ... 
}