1

Zend Framework 2를 사용하여 첫 번째 콘솔 앱을 만들려고합니다. 해당 프레임 워크와 doctrine을 모두 수정해야하며 컨트롤러에서 단순히 " Doctrine 모듈의 다른 액션으로 리다이렉트한다. 예상대로 작동Zend Framework 2의 콘솔 액션에서 리디렉션

public function setupAction() { 
    return $this->redirect()->toRoute('orm:schema-tool:create'); 
} 

하지만 난

내가 명령 줄에서 직접 작업 orm:schema-tool:create를 호출하지만 경우
Zend\Mvc\Router\Exception\RuntimeException 
Route with name "orm:schema-tool:create" not found 

를 얻을 :

내가 좋아하는 그 일을 시도했다.

답변

1

Doctrine의 CLI 인터페이스로 요청을 리디렉션하는 대신 SchemaTool을 사용하여 수동으로 동일한 효과를 쉽게 얻을 수 있습니다. 너무 많은 파기가 필요하지 않습니다. 예를 들어

:

use Doctrine\ORM\Tools\SchemaTool; 
use Zend\Mvc\Controller\AbstractConsoleController; 

BarController extends AbstractConsoleController 
{ 
    public function setupAction() { 
     $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default'); 
     $schemaTool = new SchemaTool($em); 
     $metaData = $em->getMetaDataFactory()->getAllMetaData(); 

     // This will return all SQL queries which needs to run to create schema 
     $sql = $schemaTool->getCreateSchemaSql($metaData); 

     // This will directly execute that queires. 
     $schemaTool->createSchema($metaData); 
    } 
} 

또한 updateSchema()dropSchema() 같은 SchemaTool의 다른 인터페이스 방법을 검사 할 수 있습니다.

희망이 있습니다.

+0

나는 이것을 시험해 볼 것입니다. :) 감사합니다. 아직도 콘솔에서 표준 mvc 요청을 리다이렉트 할 수 있다는 것이 이상합니다. –

1

orm:schema-tool:create은 ZF2 경로가 아니며, Doctrine 명령 줄 스크립트에 전달하는 명령입니다. 나는 당신이 리다이렉트하고 싶지 않다고 생각하고있다. 단순히 교리 명령을 실행하기 만하면된다. 이것은 가능할 수도 있지만 Doctrine 코드에서 약간 파고들 것입니다.

+0

그 파고는 내가 피하려고했던 정확하게 것입니다! 이 일을하는 더 자연스러운 방법이 있어야한다고 생각합니다. –

관련 문제