1
我有兩個表/實體client
和site
,它們具有由連接表client_site
組合的多對多關係。以下是我的實體如何設置。Doctrine2:爲什麼映射沒有檢測到我的複合鍵
下面是客戶端表實體
/**
* @Entity
* @Table(name="client")
*/
class Client
{
/**
* @Id @Column(type="bigint")
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ManyToMany(targetEntity="Site", inversedBy="clients")
* @JoinTable(name="client_site",
* joinColumns={@JoinColumn(name="c_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="s_id", referencedColumnName="id")}
* )
*/
private $sites;
和站點表實體
/**
* @Entity
* @Table(name="site")
*/
class Site
{
/**
* @Id @Column(type="bigint")
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ManyToMany(targetEntity="Client", mappedBy="sites")
*/
private $clients;
這是client_site表實體
/**
* @Entity
* @Table(name="client_site",indexes={@index(name="FK_client_site",columns={"c_id"}),@index(name="FK_client_site_2",columns={"s_id"})})
*/
class ClientSite
{
/**
* @Id
* @ManyToOne(targetEntity="Client", inversedBy="ClientSite")
*/
private $client;
/**
* @Id
* @ManyToOne(targetEntity="Site", inversedBy="ClientSite")
*/
private $site;
這是我試圖運行
$query = Zend_Registry::get('em')
->createQuery('SELECT c, s
FROM Application\Models\Client c
JOIN c.sites s
WHERE c.is_active = 1');
$clients = $query->getResult();
查詢,這是我的錯誤
No identifier/primary key specified for Entity 'Application\Models\ClientSite'. Every Entity must have an identifier/primary key.
我把@Id在這兩個領域在ClientSite實體,因爲它們是我的連接器表的複合主鍵。這不能在Doctrine2中完成嗎?如果它不能,我有什麼替代選擇。
如果你能做到這一點,我做了什麼不正確?
你知道現在這個問題嗎? – user1121883 2013-02-17 16:23:38
@ user1121883我最近沒有跟進開發,你應該可以很容易地測試它是否可以自己工作。 – 2013-02-17 22:05:43