教义2.1如何使用yaml

发布于 2024-11-27 20:08:09 字数 5907 浏览 0 评论 0原文

我已经通过命令生成了教义文件 YAML:

php doctrine.php orm:convert-mapping --from-database yaml /usr/local/www/dev/vmilkov/jv-admin-2-0/library/yaml

它生成了许多文件:

Addresses.dcm.yml
AdminMenu.dcm.yml
BlogEntryCommentData.dcm.yml
BlogType.dcm.yml
CartoonEntryGroup.dcm.yml
ChronopayTest.dcm.yml
CityLocation.dcm.yml
...
SubwayStation.dcm.yml
Telecast.dcm.yml
TemplatesTemporary.dcm.yml
TourEntryPartData.dcm.yml
...
TvTeam.dcm.yml
User.dcm.yml
UserErrorReport.dcm.yml
Users.dcm.yml

我的代码:

// Показывать все ошибки
error_reporting(E_ALL);
ini_set("display_errors", 1);


set_include_path(
          '.'
        . PATH_SEPARATOR . __DIR__ . '/../library'
        . PATH_SEPARATOR . '../application/models/'
        . PATH_SEPARATOR . '../application/classes/'
        . PATH_SEPARATOR . '../application/'
        . PATH_SEPARATOR . get_include_path()
);

$dirInfo = pathinfo($_SERVER["DOCUMENT_ROOT"]);

define('ROOT_PATH', $dirInfo['dirname']);
define('LIBRARY_PATH', ROOT_PATH . DIRECTORY_SEPARATOR . 'library');


// Подключить Доктриновский загрузчик
require 'Doctrine/Common/ClassLoader.php';


/**
 * Регистрация загрузчиков для разных namespace
 */

    /**
     * Основные классы
     */

        // Основной раздел доктрины
        $classLoader = new \Doctrine\Common\ClassLoader('Doctrine');
        $classLoader->register();

        // Раздел сущностей
        $classLoader = new \Doctrine\Common\ClassLoader('Entities');
        $classLoader -> register();

        // load the proxy entities
        $proxyClassLoader = new \Doctrine\Common\ClassLoader('Proxies', 'Models');
        $proxyClassLoader->register();




$config = new Doctrine\ORM\Configuration(); // (2)

$config -> setAutoGenerateProxyClasses("development");

    // Mapping Configuration (4)
    $driverImpl = new \Doctrine\ORM\Mapping\Driver\YamlDriver(LIBRARY_PATH . '/yaml');

$config->setMetadataDriverImpl($driverImpl);

// Proxy Configuration (3)
$config -> setProxyDir(LIBRARY_PATH . '/Proxies');
$config -> setProxyNamespace('Proxies');

    $cache = new \Doctrine\Common\Cache\ArrayCache();

$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);






// database configuration parameters (6)
$connectionParams = array(
  'dbname' => 'test',
  'user' => 'test',
  'password' => 'test',
  'host' => '192.168.0.1',
  'driver' => 'pdo_mysql',
);


// obtaining the entity manager (7)
$evm = new Doctrine\Common\EventManager();

$entityManager = \Doctrine\ORM\EntityManager::create($connectionParams, $config, $evm);

$entityManager->getConfiguration()->setMetadataDriverImpl($driverImpl);






//echo '<hr />'; var_dump( $entityManager->getMetadataFactory()->getMetadataFor('StoreItem') ); exit;



$dql = "SELECT Perons.* FROM Person";
$query = $entityManager->createQuery($dql);




var_dump( $query->getArrayResult() );

文件 Person.dcm.yml

Person:
  type: entity
  table: person
  fields:
    id:
      id: true
      type: integer
      unsigned: false
      nullable: false
      generator:
        strategy: IDENTITY
    day:
      type: integer
      unsigned: false
      nullable: true
    month:
      type: integer
      unsigned: false
      nullable: true
    year:
      type: integer
      unsigned: false
      nullable: true
    country:
      type: string
      length: 20
      fixed: false
      nullable: true
    city:
      type: string
      length: 20
      fixed: false
      nullable: true
    address:
      type: string
      length: 200
      fixed: false
      nullable: true
    phone:
      type: string
      length: 30
      fixed: false
      nullable: true
    email:
      type: string
      length: 50
      fixed: false
      nullable: true
    icq:
      type: string
      length: 15
      fixed: false
      nullable: true
    skype:
      type: string
      length: 30
      fixed: false
      nullable: true
    site:
      type: string
      length: 30
      fixed: false
      nullable: true
    sex:
      type: boolean
      nullable: true
    about:
      type: string
      length: 3000
      fixed: false
      nullable: true
    status:
      type: string
      length: null
      fixed: false
      nullable: false
    additionalRole:
      type: string
      length: null
      fixed: false
      nullable: false
      column: additional_role
    additionalRoleTitle:
      type: string
      length: 256
      fixed: false
      nullable: true
      column: additional_role_title
    subscribeInterest:
      type: boolean
      nullable: true
      column: subscribe_interest
  manyToMany:
    encEntry:
      targetEntity: EntryEnc
      cascade: {  }
      mappedBy: author
      inversedBy: null
      joinTable: null
      orderBy: null
    resource:
      targetEntity: Resource
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
    direction:
      targetEntity: Direction
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
    entry:
      targetEntity: Entry
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
    comment:
      targetEntity: Comment
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
  oneToOne:
    personType:
      targetEntity: PersonType
      cascade: {  }
      mappedBy: null
      inversedBy: null
      joinColumns:
        person_type:
          referencedColumnName: code
      orphanRemoval: false
  lifecycleCallbacks: {  }

我尝试进行谷歌搜索,但没有找到有关使用此(YAML)文件的信息...

你能帮我找到方法吗?

  1. yaml 文件针是什么,它是元数据文件吗?
  2. 请给我一些使用示例,因为我尝试过的所有示例都会引发异常..

非常感谢!

I have generated by doctrine files YAML by command:

php doctrine.php orm:convert-mapping --from-database yaml /usr/local/www/dev/vmilkov/jv-admin-2-0/library/yaml

It's generate many files:

Addresses.dcm.yml
AdminMenu.dcm.yml
BlogEntryCommentData.dcm.yml
BlogType.dcm.yml
CartoonEntryGroup.dcm.yml
ChronopayTest.dcm.yml
CityLocation.dcm.yml
...
SubwayStation.dcm.yml
Telecast.dcm.yml
TemplatesTemporary.dcm.yml
TourEntryPartData.dcm.yml
...
TvTeam.dcm.yml
User.dcm.yml
UserErrorReport.dcm.yml
Users.dcm.yml

My code:

// Показывать все ошибки
error_reporting(E_ALL);
ini_set("display_errors", 1);


set_include_path(
          '.'
        . PATH_SEPARATOR . __DIR__ . '/../library'
        . PATH_SEPARATOR . '../application/models/'
        . PATH_SEPARATOR . '../application/classes/'
        . PATH_SEPARATOR . '../application/'
        . PATH_SEPARATOR . get_include_path()
);

$dirInfo = pathinfo($_SERVER["DOCUMENT_ROOT"]);

define('ROOT_PATH', $dirInfo['dirname']);
define('LIBRARY_PATH', ROOT_PATH . DIRECTORY_SEPARATOR . 'library');


// Подключить Доктриновский загрузчик
require 'Doctrine/Common/ClassLoader.php';


/**
 * Регистрация загрузчиков для разных namespace
 */

    /**
     * Основные классы
     */

        // Основной раздел доктрины
        $classLoader = new \Doctrine\Common\ClassLoader('Doctrine');
        $classLoader->register();

        // Раздел сущностей
        $classLoader = new \Doctrine\Common\ClassLoader('Entities');
        $classLoader -> register();

        // load the proxy entities
        $proxyClassLoader = new \Doctrine\Common\ClassLoader('Proxies', 'Models');
        $proxyClassLoader->register();




$config = new Doctrine\ORM\Configuration(); // (2)

$config -> setAutoGenerateProxyClasses("development");

    // Mapping Configuration (4)
    $driverImpl = new \Doctrine\ORM\Mapping\Driver\YamlDriver(LIBRARY_PATH . '/yaml');

$config->setMetadataDriverImpl($driverImpl);

// Proxy Configuration (3)
$config -> setProxyDir(LIBRARY_PATH . '/Proxies');
$config -> setProxyNamespace('Proxies');

    $cache = new \Doctrine\Common\Cache\ArrayCache();

$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);






// database configuration parameters (6)
$connectionParams = array(
  'dbname' => 'test',
  'user' => 'test',
  'password' => 'test',
  'host' => '192.168.0.1',
  'driver' => 'pdo_mysql',
);


// obtaining the entity manager (7)
$evm = new Doctrine\Common\EventManager();

$entityManager = \Doctrine\ORM\EntityManager::create($connectionParams, $config, $evm);

$entityManager->getConfiguration()->setMetadataDriverImpl($driverImpl);






//echo '<hr />'; var_dump( $entityManager->getMetadataFactory()->getMetadataFor('StoreItem') ); exit;



$dql = "SELECT Perons.* FROM Person";
$query = $entityManager->createQuery($dql);




var_dump( $query->getArrayResult() );

File Person.dcm.yml

Person:
  type: entity
  table: person
  fields:
    id:
      id: true
      type: integer
      unsigned: false
      nullable: false
      generator:
        strategy: IDENTITY
    day:
      type: integer
      unsigned: false
      nullable: true
    month:
      type: integer
      unsigned: false
      nullable: true
    year:
      type: integer
      unsigned: false
      nullable: true
    country:
      type: string
      length: 20
      fixed: false
      nullable: true
    city:
      type: string
      length: 20
      fixed: false
      nullable: true
    address:
      type: string
      length: 200
      fixed: false
      nullable: true
    phone:
      type: string
      length: 30
      fixed: false
      nullable: true
    email:
      type: string
      length: 50
      fixed: false
      nullable: true
    icq:
      type: string
      length: 15
      fixed: false
      nullable: true
    skype:
      type: string
      length: 30
      fixed: false
      nullable: true
    site:
      type: string
      length: 30
      fixed: false
      nullable: true
    sex:
      type: boolean
      nullable: true
    about:
      type: string
      length: 3000
      fixed: false
      nullable: true
    status:
      type: string
      length: null
      fixed: false
      nullable: false
    additionalRole:
      type: string
      length: null
      fixed: false
      nullable: false
      column: additional_role
    additionalRoleTitle:
      type: string
      length: 256
      fixed: false
      nullable: true
      column: additional_role_title
    subscribeInterest:
      type: boolean
      nullable: true
      column: subscribe_interest
  manyToMany:
    encEntry:
      targetEntity: EntryEnc
      cascade: {  }
      mappedBy: author
      inversedBy: null
      joinTable: null
      orderBy: null
    resource:
      targetEntity: Resource
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
    direction:
      targetEntity: Direction
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
    entry:
      targetEntity: Entry
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
    comment:
      targetEntity: Comment
      cascade: {  }
      mappedBy: person
      inversedBy: null
      joinTable: null
      orderBy: null
  oneToOne:
    personType:
      targetEntity: PersonType
      cascade: {  }
      mappedBy: null
      inversedBy: null
      joinColumns:
        person_type:
          referencedColumnName: code
      orphanRemoval: false
  lifecycleCallbacks: {  }

I'm tried to googling but found nothing about using this (YAML) files...

Can you help me to find way?

  1. What for yaml files needle, is it metadata files?
  2. Please, give me some example of use, because all examples that I tried throw me exception..

Thank you very much!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烛影斜 2024-12-04 20:08:09

为实体、代理和映射文件创建一个文件夹...像这样

/bin
   /Entities
   /Proxies
   /mapping
      /xml
      /yml
   cli-config.php
   ...

在 cli-config.php 中更改当前驱动程序的路径

并尝试使用此命令

php doctrine orm:convert-mapping --from-database --namespace='Entities\' xml mapping/xml
php doctrine orm:convert-mapping --from-database --namespace='Entities\' yml mapping/yml

php doctrine orm:generate-entities --generate-annotations=1 .
php doctrine orm:generate-proxies Proxies

create a folder for Entities, Proxies and mapping files ... like this

/bin
   /Entities
   /Proxies
   /mapping
      /xml
      /yml
   cli-config.php
   ...

in the cli-config.php change the Driver's path for the current

and try with this commands

php doctrine orm:convert-mapping --from-database --namespace='Entities\' xml mapping/xml
php doctrine orm:convert-mapping --from-database --namespace='Entities\' yml mapping/yml

php doctrine orm:generate-entities --generate-annotations=1 .
php doctrine orm:generate-proxies Proxies
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文