Я сгенерировал файлы доктрины 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: { }
Я пытался поискать в Google, но ничего не нашел в использовании этих (YAML) файлов ...
Можете ли вы помочь мне найтиспособ?
- Что за файлы yaml иглы, это файлы метаданных?
- Пожалуйста, дайте мне пример использования, потому что все примеры, которые я пробовал, вызывают исключение ..
Большое спасибо!