Doctrine2: Почему Mapping не обнаруживает мои составные ключи - PullRequest
1 голос
/ 25 апреля 2011

У меня есть две таблицы / сущности client и site, которые имеют отношение многие ко многим, объединенные таблицей соединений client_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;

Это объект таблицы 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?Если это невозможно, каковы мои альтернативные варианты.

Если вы МОЖЕТЕ сделать это, что я сделал неправильно?

1 Ответ

1 голос
/ 25 апреля 2011

В настоящее время это не поддерживается Doctrine 2.

Однако они работают над добавлением поддержки этого в экспериментальной ветке.Очевидно, это может быть включено в выпуск 2.1, если он работает без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...