我使用的Symfony 2.1.2。
我有两个实体,并定义一个[多到一个(双向)](1)在它们之间的关联。 我不想使用外键(referencedColumnName)主键。 我想用另一个整数唯一的列:CUSTOMER_NO
/**
* @ORM\Entity
* @ORM\Table(name="t_myuser")
*/
class MyUser extends BaseEntity // provides an id (pk)
{
/**
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="user")
* @ORM\JoinColumn(name="customer_no", referencedColumnName="customer_no", nullable=false)
*/
public $customer;
}
/**
* @ORM\Entity
* @ORM\Table(name="t_customer")
*/
class Customer extends BaseEntity // provides an id (pk)
{
/**
* @ORM\Column(type="integer", unique=true, nullable=false)
*/
public $customer_no;
/**
* @ORM\OneToMany(targetEntity="MyUser", mappedBy="customer")
*/
public $user;
}
当我尝试坚持与客户实体MYUSER实体,我得到这个错误:
注意:未定义指数:CUSTOMER_NO在... \供应商\原则\ ORM \ LIB \原则\ ORM \,持久\ BasicEntityPersister.php线608
在DB模式看起来不错,这应该是重要的SQL模式定义:
CREATE UNIQUE INDEX UNIQ_B4905AC83CDDA96E ON t_customer (customer_no);
CREATE INDEX IDX_BB041B3B3CDDA96E ON t_myuser (customer_no);
ALTER TABLE t_myuser ADD CONSTRAINT FK_BB041B3B3CDDA96E FOREIGN KEY (customer_no)
REFERENCES t_customer (customer_no) NOT DEFERRABLE INITIALLY IMMEDIATE;
所以肯定是有对CUSTOMER_NO指数
//更新:我解决inversedBy和的mappedBy的东西,但这不是问题。
(1): http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-bidirectional