当我尝试使用Doctrine 2 ORM CLI模式工具生成数据库模式时,缺少Embeddable的列。有人可以告诉我我在做什么错吗?
按照“ Getting Started with Doctrine”教程的介绍,我的项目的结构如下:
project
-- src
---- User.php
-- vendor
---- <dependencies>
-- composer.json
-- composer.lock
-- bootstrap.php
-- cli-config.php
从该教程中也复制了bootstrap.php和cli-config.php,我将数据库连接更改为使用MySQL
<?php
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once "vendor/autoload.php";
// Create a simple "default" Doctrine ORM configuration for Annotations
$isDevMode = true;
$config =
Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"),
$isDevMode);
// database configuration parameters
$conn = array(
// changed this to use MySQL
);
// obtaining the entity manager
$entityManager = EntityManager::create($conn, $config);
和
<?php
// cli-config.php
require_once "bootstrap.php";
return
\Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager);
然后从他们的'Separating Concerns using Embeddables复制User.php,我向User类添加了$ id
<?php
/** @Entity */
class User
{
/** @Id @Column(type="integer") @GeneratedValue **/
protected $id;
/** @Embedded(class = "Address") */
private $address;
}
/** @Embeddable */
class Address
{
/** @Column(type = "string") */
private $street;
/** @Column(type = "string") */
private $postalCode;
/** @Column(type = "string") */
private $city;
/** @Column(type = "string") */
private $country;
}
使用命令行生成数据库架构
vendor/bin/doctrine orm:schema-tool:update --force --dump-sql
我得到一个只有“ id”列的User表。 如何获取它以生成Embeddable的列?
答案 0 :(得分:0)
找出问题所在:直到2.5版才引入可嵌入对象,Getting Started with Doctrine教程在其示例composer.json文件中使用2.4。*版。
更改为版本2.5。*,现在,架构工具正在为可嵌入对象生成数据库列。