Symfony Doctrine2-如何与字符串列建立关系
我有一个问题,我需要与两个表建立关系,但由于没有常规id,我需要使用strings列。大概是这样的:Symfony Doctrine2-如何与字符串列建立关系,symfony,doctrine-orm,Symfony,Doctrine Orm,我有一个问题,我需要与两个表建立关系,但由于没有常规id,我需要使用strings列。大概是这样的: /** * @ORM\Entity * @ORM\Table(name="sigtap_tb_procedimento") */ class Procedimento { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY")
/**
* @ORM\Entity
* @ORM\Table(name="sigtap_tb_procedimento")
*/
class Procedimento
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="ExcecaoCompatibilidade", mappedBy="procedimento_restricao")
* @ORM\JoinColumn(name="co_procedimento_restricao", referencedColumnName="co_procedimento")
*/
private $restricoes;
}
/**
* @ORM\OneToMany(targetEntity="ExcecaoCompatibilidade", mappedBy="procedimento_restricao")
*/
private $restricoes;
和另一个实体
/**
* @ORM\Entity
* @ORM\Table(name="sigtap_rl_excecao_compatibilidade")
*/
class ExcecaoCompatibilidade
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Procedimento", inversedBy="restricoes")
* @ORM\JoinColumn(name="co_procedimento_restricao", referencedColumnName="co_procedimento")
*/
private $procedimento_restricao;
}
co_procedmento_restrico和co_procedmento_restrico是字符串类型,关系不起作用。如何解决此问题?您的关系需要引用另一个表中的主键。 也许我误解了你的问题,但你能不能像这样提及这段关系:
/**
* @ORM\Entity
* @ORM\Table(name="sigtap_tb_procedimento")
*/
class Procedimento
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="ExcecaoCompatibilidade", mappedBy="procedimento_restricao")
* @ORM\JoinColumn(name="co_procedimento_restricao", referencedColumnName="co_procedimento")
*/
private $restricoes;
}
/**
* @ORM\OneToMany(targetEntity="ExcecaoCompatibilidade", mappedBy="procedimento_restricao")
*/
private $restricoes;
请看这里:
使用一对多关系与原则
使用@ OneToMany的一方总是与原则的POV的关系的反面,可能不是你认为是相反的一方,而且从来没有一个连接列定义。 从类procedmento中删除@JoinColumn注释
@OneToMany必须使用mappedBy和@ManyToOne,拥有方使用inversedBy 联接列或联接表定义必须与@ManyToOne一起位于拥有方 当使用联接列时,将添加到拥有方实体(也称为多方实体)表中的该列的名称将由name=column\u name指定,并且要存储在其中的引用外键是@joincolm注释的referencedColumnName=iddefinition