symphony2 및 distrine을 사용하여 기존 데이터베이스에서 단일 개체 생성
Symfony2 콘솔 도구를 사용하여 데이터베이스에서 단일 개체를 생성할 수 있습니까?
코딩하는 도중에 테이블을 추가해야 했고 기존 엔티티 클래스에 대한 수정 사항이 있습니다.그래서 저는 제 모든 실체가 재생되는 것을 원하지 않습니다.
어떤 제안이든 감사히 받겠습니다!
저도 같은 문제가 있었습니다. 이렇게 해야 합니다.
php app/console doctrine:mapping:convert metadata_format \
./src/App/MyBundle/Resources/config/doctrine \
--from-database \
--filter="Yourtablename"
그리고나서
php app/console doctrine:mapping:import AppMyBundle \
metadata_format --filter="Yourtablename"
metadata_format
생성할 파일 끝입니다(예: xml, yml, 주석).
그리고 마지막으로
php app/console doctrine:generate:entities AppMyBundle --no-backup
이 교리는 필요한 개체만 로드합니다.Camel Case를 사용해야 하는 필터는 주의하시기 바랍니다!
이것이 당신에게 도움이 되기를 바랍니다.
세 번째 명령의 경우, 독트린이 모든 엔티티 파일을 계속 재생성했습니다.번들 뒤에 엔터티 이름을 추가하여 내가 관심 있는 엔터티만 생성했습니다.
php app/console doctrine:generate:entities AppMyBundle:Yourtablename --no-backup
Simple Working Solution for Symfony 2.7 옵션 주석 및 [/xml/yml]의 경우 http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html 을 참조하십시오.
3단계로 3개의 명령을 수행합니다.
$ php app/console doctrine:mapping:import --force AppBundle xml --filter="Meeting"
(참고: 데이터베이스 이름이 다음과 같은 경우my_meeting
다음으로 변경해야 합니다.MyMeeting
인에filter="MyMeeting"
교의가 당신의 테이블 이름을 찾도록 하기 위해서입니다.이는 교의가 항상 밑줄을 제거하고 테이블 이름에 Camel-case를 추가하기 때문입니다.그렇지 않으면 "데이터베이스에 매핑 정보가 없습니다"라는 오류가 나타납니다.
$ php app/console doctrine:mapping:convert annotation ./src/AppBundle/Entity --from-database --filter="Meeting"
(참고: 다음 부품을 준비했는지 확인합니다.namespace AppBundle\Entity;
귀하의 회의에서 아래와 같이.php 클래스 파일은 다음과 같습니다.
<?php
/**
* Created by PhpStorm.
* User:
* Date: 03-Sep-2015
* Time: 3:23 PM
*/
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
추가하지 않을 경우.)
여기서:
- AppBundle은 Symfony 2.7의 "AppBundle"과 정확히 일치합니다.
- 미팅은 대상 테이블입니다(Camel-Case sensitive).
확인하려면 다음 디렉토리를 확인합니다.
src\AppBundle/Resources/config/docrine/Meeting.orm.xml
그리고 엔티티 클래스 파일을 만들 테이블에 대한 .xml 파일만 있고 다른 파일은 없는지 확인합니다.그런 다음 아래 명령을 실행하여 이전에 만든 엔티티 클래스에 대한 get 및 set 메서드를 생성합니다.
$ php 앱/콘솔 교리:generate:entities AppBundle:미팅 --백업 안 함
: 로 를 을 해야 xml 을 해야 src\AppBundle/Resources/config/doctrine/VisitorData.orm.xml
제게 아주 잘 들어맞습니다.
설명을 원하시면 http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html 을 읽어보세요.
@fyrye의 현재 숨겨진 코멘트는 칭찬받을만하며, 다른 사람들이 놓치지 않도록 이것을 추가하고 싶었습니다.접근 방식은 다음과 같습니다.
/** @var \Doctrine\DBAL\Connection $connection */
$config = $connection->getConfiguration();
// for excluding an specific table
$config->setFilterSchemaAssetsExpression('/^(table_to_reverse_engineer_1|table_to_reverse_engineer_2).*$/');
출처 : https://coderwall.com/p/jofhdw/doctrine-tell-which-tables-to-work-with
잘못 정의된 레거시 테이블의 수가 많아 다음 명령을 실행할 때 문제가 발생했습니다.
php ./vendor/bin/doctrine orm:convert-mapping --force --from-database annotation ./src/UI/Entity/
--filter 플래그는 기본 키가 없거나 다른 문제가 있는 테이블에서 메타 데이터를 읽은 후에만 필터링하는 것으로 나타났습니다.
Symfony 3를 사용하는 저에게 맞는 답은 없었습니다.난 결국 이렇게 됐어요.
php bin/console doctrine:mapping:import --force MyBundle xml --filter="MyTable"
php bin/console doctrine:mapping:convert annotation ./src --filter="MyTable"
php bin/console doctrine:generate:entities MyBundle:MyTable --path ./src
합격한 답변에 댓글로 남겨두겠지만 저는 초보입니다.
이름에 일치하는 문자열이 있는 여러 테이블을 --filter 스위치로 매핑하는 데 문제가 있었던 저처럼 패턴을 사용할 수 있습니다.
테이블 이름 예제:
공급업체 공급업체 연락처
php app/console doctrine:mapping:convert metadata_format \
./src/App/MyBundle/Resources/config/doctrine \
--from-database \
--filter="Vendor"
이 명령은 공급업체가 아닌 두 테이블을 모두 변환합니다.VendorContact가 아닌 Vendor만 원하는 경우 --filter에서 패턴을 사용합니다.
php app/console doctrine:mapping:convert metadata_format \
./src/App/MyBundle/Resources/config/doctrine \
--from-database \
--filter="\bVendor\b"
누군가에게 도움이 되길 바랍니다!
Symfony 3와도 잘 어울립니다.
"No Metadata Classs to process." 메시지가 나타나면 필터 매개변수에서 테이블 이름을 Deterrine camel casing으로 변환합니다.
"My_table_name"을(를) "MyTableName"으로 써야 합니다.
--filter는 테이블 이름이 아닌 엔티티 이름과 함께 작동합니다! php bin/hp distrine:hp:import "App\Entity" 주석 --path=config/hp --filter="귀하의 사업체"
심포니 3의 경우
새 "그룹" 테이블에 대한 도면요소를 생성하려면 다음과 같이 하십시오.
php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/AppBundle/Entity --filter Group
심포니 3 문서에 쓰인 것처럼.
저는 Symfony 2.4와 MySQL에 대해서 정확히 같은 문제가 있었습니다.
위에 올린 해결책 중에 저에게 맞는 것은 없었습니다.
추출하고 싶은 테이블로 새 데이터베이스를 만들었습니다(MySQL에서 생성 스크립트를 제공하므로 이 작업을 쉽게 수행할 수 있습니다).
그런 다음 해당 새 데이터베이스에 대한 연결을 변경하고 개체 추출 명령을 실행했습니다.
좀 과격한 것 같지만, 직접 주체를 만들지는 않겠습니다.
도움이 되기를 바랍니다.
내 심포니 3.3에 이 중 하나도 작동하지 않았습니다.그래서 그냥 디렉토리의 복사본을 만들고 복사본 디렉토리의 모든 엔티티를 다시 생성했습니다.그런 다음 원래 디렉터리에 필요한 개체를 복사했습니다.
--https://github.com/symfony/symfony/issues/7717 이 문제로 인해 필터가 작동하지 않습니다.
2019년부터 예비 공학 기능이 저하되었기 때문에 더 이상 사용하지 않는 것이 좋습니다.대신 Symfony Maker 번들의 make:entity를 사용하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/10371600/generating-a-single-entity-from-existing-database-using-symfony2-and-doctrine
'programing' 카테고리의 다른 글
SQL Server에서 부분적으로 따옴표로 따옴표로 묶은 CSV 파일 대량 삽입 (0) | 2023.09.09 |
---|---|
페이지 로드 사이에 변수 지속 (0) | 2023.09.09 |
PIL을 사용하여 RGBA PNG를 RGB로 변환 (0) | 2023.09.09 |
std:: 문자열을 사용한 printf? (0) | 2023.09.09 |
잠금 테이블을 수행할 때 원격 사용자의 액세스가 거부됨 (0) | 2023.09.09 |