我正在使用Symfony 2.1.2。doctrine2:未定義索引 - 與非默認referencedColumnName多對一不會持續實體
我有兩個實體並定義它們之間的[多對一(雙向)](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
在數據庫架構看起來不錯,這應該是重要的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的東西,但這不是問題。
不知道這有什麼關係,但inversedBy和的mappedBy應包含:您可以測試它,太另一個實體中的屬性名稱,而不是數據庫表的名稱 –
它不會說相反。看,它說mappedBy =「product」其中product是特性實體中屬性的名稱。而inversedBy =「功能」,其中功能是產品實體中屬性的名稱。它不會說任何地方的表名 –
我修復它,但這不是問題 – timaschew