2016-11-22 5 views
0

У меня есть следующая проблема - у меня есть одна таблица, object_types в базе данных MySQL и две сущности - Object и ObjectType в моем проекте Symfony 3.2. Я только что синхронизировал типы объектов, и теперь хочу сделать то же самое с объектами с командой php bin/console doctrine:schema:update --complete, но он не создает внешний ключ между таблицами.Команда обновления Symfony Doctrine не создает внешний ключ в однонаправленной многоадресной ассоциации

Вот 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; 

    .... 
} 

ObjectType:

<?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

Try ниже

ManyToOne

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

OneToMany

/** 
    * @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; 

    .... 
} 

ObjectType

<?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

Это сработало! благодаря –