学说2.1如何使用yaml

时间:2022-09-15 19:20:00

I have generated by doctrine files YAML by command:

我是通过命令生成的教义文件YAML:

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.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...

我试图谷歌搜索,但没有发现使用这个(YAML)文件...

Can you help me to find way?

你能帮我找路吗?

  1. What for yaml files needle, is it metadata files?
  2. 什么yaml文件针,是元数据文件?
  3. Please, give me some example of use, because all examples that I tried throw me exception..
  4. 请给我一些使用示例,因为我试过的所有例子都让我异常..

Thank you very much!

非常感谢你!

1 个解决方案

#1


0  

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

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

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

#1


0  

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

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

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