我有以下问题 - 我在MySQL数据库中有一个表object_types
,在我的Symfony 3.2项目中有两个实体 - Object
和ObjectType
。我刚刚同步了对象类型,现在我想对使用php bin/console doctrine:schema:update --complete
命令的对象执行相同操作,但它不会在表之间创建外键。
以下是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 :(得分: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;
希望它应该可以正常工作。