Symfony 2.1.2 を使用しています。
2 つのエンティティがあり、[多対 1 (双方向)] (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 エンティティで永続化しようとすると、次のエラーが発生します。
Notice: 未定義のインデックス: customer_no in ...\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\BasicEntityPersister.php 行 608
データベースのスキーマは正常に見えます。これらは重要な 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 を修正しましたが、これは問題ではありません。