Doctrine2 ORM生成的数据库架构缺少可嵌入的列

时间:2018-07-22 22:00:40

标签: doctrine-orm

当我尝试使用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的列?

1 个答案:

答案 0 :(得分:0)

找出问题所在:直到2.5版才引入可嵌入对象,Getting Started with Doctrine教程在其示例composer.json文件中使用2.4。*版。

更改为版本2.5。*,现在,架构工具正在为可嵌入对象生成数据库列。