教义2.1如何使用yaml
我已经通过命令生成了教义文件 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)文件的信息...
你能帮我找到方法吗?
- yaml 文件针是什么,它是元数据文件吗?
- 请给我一些使用示例,因为我尝试过的所有示例都会引发异常..
非常感谢!
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?
- What for yaml files needle, is it metadata files?
- Please, give me some example of use, because all examples that I tried throw me exception..
Thank you very much!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为实体、代理和映射文件创建一个文件夹...像这样
在 cli-config.php 中更改当前驱动程序的路径
并尝试使用此命令
create a folder for Entities, Proxies and mapping files ... like this
in the cli-config.php change the Driver's path for the current
and try with this commands