2011-11-30 1 views
1

symfony 1.4Doctrine을 사용하여 일종의 mini-CMS를 만들었습니다. 데이터베이스를 사용하여 다른 페이지와 범주를 저장합니다.심포니 1.4에서 작업을 구성하는 방법은 무엇입니까?

고객 정보를 검색하기 위해 databases.yml에 다른 연결을 추가했습니다.

symfony에 해당 데이터베이스는 읽기 전용이며, 절대로 쓰지 않아야 함을 알려드립니다.

잠시 동안 읽을 수만있는 두 번째 데이터베이스에서 사용자를 만들었습니다. doctrine:build --all과 같은 명령이 계속 쓰려고하지만 트릭을 수행하는 것 같습니다.

편집 : 파스칼의 대답 덕분에, 나는 이벤트를 사용하여 doctrine에게 sfDoctrineDropDbTask 작업에 대해서 단 하나의 db만을 사용하도록 알려줍니다.

public function setup() 
    { 
    (...) 
    $this->dispatcher->connect('command.filter_options', array($this, 'filterCommandOptions')); 
    } 

    public function filterCommandOptions(sfEvent $event, $options) 
    { 

    if ('sfDoctrineDropDbTask' === get_class($event->getSubject())) 
     $options = array('base1'); 
    elseif ('sfDoctrineBuildDbTask' === get_class($event->getSubject())) 
     $options = array('base1'); 

    elseif ('sfDoctrineDataDumpTask' === get_class($event->getSubject())) 
     $options = array('base1'); 
    //elseif ('sfDoctrineInsertSqlTask' === get_class($event->getSubject())) 
     //$options = array('base1'); 
    elseif ('sfDoctrineCreateModelTables' === get_class($event->getSubject())) 
     $options = array('base1'); 


    return $options; 
    } 

이 트릭은 다른 작업을 위해 작동하지 않습니다

  • doctrine:data-dump 여전히 두 데이터베이스를 읽고,
  • 교리가 여전히 doctrine:build --all 작업 중에 쓰려고
  • sfDoctrineInsertSqlTask가 불평 I 너무 많은 옵션을 주었다.

답변

1

당신은 데이터베이스의 이름을 강요 할 수 있습니다. doctrine : build --all은 이벤트를 사용하여 삭제할 수 있습니다.

확인이 : https://gist.github.com/582306

+0

아주 좋은, 더 longers을 심포니되지는 DB를 드롭하려고! "sfDoctrineDropDbTask"와 같은 다른 명령 이름은 어디에서 찾을 수 있습니까? – Manu

+0

을 찾았습니다. 이상한, sfDoctrineInsertSqlTask ​​ – Manu

+0

(주어진 인수가 너무 많음)에서 작동하지 않습니다. – Manu