Doctrine orm Doctrine2:为什么映射没有检测到我的复合键

Doctrine orm Doctrine2:为什么映射没有检测到我的复合键,doctrine-orm,Doctrine Orm,我有两个表/实体client和site,它们通过联接表client\u site组合成多对多关系。以下是如何设置我的实体 这是客户表实体 /** * @Entity * @Table(name="client") */ class Client { /** * @Id @Column(type="bigint") * @GeneratedValue(strategy="AUTO") */ private $id; /**

我有两个表/实体
client
site
,它们通过联接表
client\u site
组合成多对多关系。以下是如何设置我的实体

这是客户表实体

/**
 * @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;
/**
 * @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;
和站点表实体

/**
 * @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;
/**
 * @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;
这是客户端站点表实体

/**
 * @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;
/**
 * @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实体的两个字段上,因为它们是joiner表的复合主键。难道这不能在教义2中实现吗?如果不能,我还有什么选择


如果你能做到这一点,我有什么做得不对吗?

目前,条令2不支持这一点


然而,他们是在一个实验分支。显然,如果2.1版没有问题,它可能会包含在2.1版中。

目前,条令2不支持这一点


然而,他们是在一个实验分支。显然,如果2.1版可以正常工作,那么它可能会包含在2.1版中。

你知道现在是否已修复吗?@user1121883我最近没有跟踪开发,但是你应该能够轻松地测试它是否能正常工作。你知道现在是否已修复吗?@user1121883我最近没有跟踪开发,不过,您应该能够自己轻松测试它是否有效。