2016-11-22 15 views
0

私は次の問題があります:Symfony 3.2プロジェクト内にMySQLデータベースにobject_typesというテーブルとObjectObjectTypeの2つのテーブルがあります。私はちょうどオブジェクトの種類を同期して、今はphp bin/console doctrine:schema:update --completeコマンドでオブジェクトで同じことをしたいのですが、テーブル間に外部キーを作成しません。ここでSymfony Doctrine updateコマンドは、単方向の多対1の関連付けで外部キーを作成しません。

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; 

私の目標を達成するためにどのように?

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; 

以下

答えて

0

てみあなたのエンティティは、以下のようにする必要があります。

オブジェクト

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

それは働いた!ありがとう –

関連する問題