2016-11-22 49 views
0

我有以下问题 - 我有一个表,object_types在MySQL数据库中,两个实体 - 我的Symfony 3.2项目中的ObjectObjectType。我刚刚同步了对象类型,现在我想要使用php bin/console doctrine:schema:update --complete命令执行相同的操作,但它不会在表之间创建外键。Symfony Doctrine update命令不会在单向多对一关联中创建外键

这里是Object类:

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Object 
* 
* @ORM\Table(name="object") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ObjectRepository") 
*/ 
class Object 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="objectID", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $ID; 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="object_typeID", type="integer") 
    * @ORM\ManyToOne(targetEntity="ObjectType") 
    * @ORM\JoinColumn(name="object_typeID", referencedColumnName="object_typeID") 
    */ 
    private $typeID; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="object_title", type="string", length=128) 
    */ 
    private $title; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="object_path", type="text") 
    */ 
    private $path; 

    /** 
    * @var bool 
    * 
    * @ORM\Column(name="object_active", type="boolean") 
    */ 
    private $active; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="object_added", type="datetime", nullable=true) 
    */ 
    private $added; 

    .... 
} 

对象类型:

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* ObjectType 
* 
* @ORM\Table(name="object_types") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ObjectTypeRepository") 
*/ 
class ObjectType 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Id 
    * @ORM\Column(name="object_typeID", type="integer", unique=true) 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $typeID; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="object_type_name", type="string", length=45) 
    */ 
    private $typeName; 

如何实现我的目标?

回答

0

下面

多对一尝试

/** 
    * @var int 
    * 
    * @ORM\ManyToOne(targetEntity="ObjectType", inversedBy="object") 
    * @ORM\JoinColumn(name="object_typeID", referencedColumnName="id") 
    */ 
    private $typeID; 

一对多

/** 
    * @ORM\OneToMany(targetEntity="Object", mappedBy="typeID") 
    */ 
    protected $object; 

你的实体应该是如下。

对象

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Object 
* 
* @ORM\Table(name="object") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ObjectRepository") 
*/ 
class Object 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="objectID", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $ID; 

    /** 
    * @var int 
    * 
    * @ORM\ManyToOne(targetEntity="ObjectType", inversedBy="object") 
    * @ORM\JoinColumn(name="object_typeID", referencedColumnName="id") 
    */ 
    private $typeID; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="object_title", type="string", length=128) 
    */ 
    private $title; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="object_path", type="text") 
    */ 
    private $path; 

    /** 
    * @var bool 
    * 
    * @ORM\Column(name="object_active", type="boolean") 
    */ 
    private $active; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="object_added", type="datetime", nullable=true) 
    */ 
    private $added; 

    .... 
} 

对象类型

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* ObjectType 
* 
* @ORM\Table(name="object_types") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ObjectTypeRepository") 
*/ 
class ObjectType 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Id 
    * @ORM\Column(name="id", type="integer", unique=true) 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="object_type_name", type="string", length=45) 
    */ 
    private $typeName; 

    /** 
    * @ORM\OneToMany(targetEntity="Object", mappedBy="typeID") 
    */ 
    protected $object; 

希望它应该工作的罚款。

+1

它的工作!谢谢 –

相关问题