我想通过第二个实体的逻辑主键将实体加入另一个实体。
说,我有这些实体:
/**
* @ORM\Table()
* @ORM\Entity()
*/
class Configuration
{
/**
* @var Dataset
*
* @ORM\ManyToOne(targetEntity="Dataset", fetch="EAGER")
* @ORM\JoinColumns(
* @ORM\JoinColumn(name="line", referencedColumnName="line"),
* @ORM\JoinColumn(name="detailtype", referencedColumnName="detailtype"),
* @ORM\JoinColumn(name="type_id", referencedColumnName="type_id"),
* @ORM\JoinColumn(name="mandator_id", referencedColumnName="mandator_id")
* )
*/
private $dataset;
/**
* @var string
*
* @ORM\Column(name="line", type="string", length=2)
*/
private $line;
/**
* @var string
*
* @ORM\Column(name="detailtype", type="string", length=50)
*/
private $detailtype;
/**
* @var integer
*
* @ORM\Column(name="type_id", type="integer")
*/
private $typeId;
/**
* @var integer
*
* @ORM\Column(name="mandator_id", type="integer")
*/
private $mandatorId;
}
/**
* Dataset
*
* @ORM\Table(
* uniqueConstraints = {
* @ORM\UniqueConstraint(
* name="uq_dataset",
* columns={"type_id", "mandator_id", "line", "detailtype"}
* )
* }
* )
* @ORM\Entity()
*/
class Dataset
{
/**
* @var Type
*
* @ORM\ManyToOne(targetEntity="Type")
* @ORM\JoinColumn(name="type_id")
*/
private $type;
/**
* @var Mandator
*
* @ORM\ManyToOne(targetEntity="Mandator")
* @ORM\JoinColumn(name="mandator_id", onDelete="CASCADE")
*/
private $mandator;
/**
* @var string
*
* @ORM\Column(name="line", type="string", length=2)
*/
private $line;
/**
* @var string
*
* @ORM\Column(name="detailtype", type="string", length=50)
*/
private $detailtype;
}
当我执行php app/console doctrine:schema:update --dump-sql
时,我收到错误
[Doctrine\ORM\ORMException]
Column name `type_id` referenced for relation from Configuration towards Dataset does not exist.
这是否与JoinColumn
中的ManyToOne
Dataset
有关。如果是这样,我怎样才能建立这样的关系,不管这些情况如何?我无法使用生成的id
值进行加入,因为Datasets
将被删除并经常重新创建,以便ID每次都会更改。逻辑主键将保持不变。
编辑1
数据库如下所示: