2014-01-08 4 views
0

Когда я пытаюсь найти Miejsce примитив ID:Symfony объект OneToOne ошибка при обновлении схемы

$m= $this->getDoctrine() 
      ->getRepository('MiejsceObiektyBundle:Miejsce') 
      ->find($id); 

я получаю эту ошибку:

Примечание: Undefined индекс: идентификатор в поставщика/Доктрина/ORM/Библиотека/Doctrine/ОРМ/AbstractQuery.php линия 286 500 Внутренняя ошибка сервера - ContextErrorException

I DEA и реальное соединение

where subdomain.rid=miejsce.id and subdomain.ridType=1 

подобласть работа для многих предприятий - так что я не хочу иметь доктрину вар от подобласти к Miejsce.

ridType=1 = miejsce 
ridType=2 = product 
ridType=3 = other 

я могу добавить условие subdomain.ridType = 1 в хранилище - но есть проблема установки связи subdomain.rid = miejsce.id потому что Miejsce не имеют идентификатор ссылки на поддомен - его не нужно субдомен есть, но не только для miejsce .... :)

Что не так в этой идее? можно использовать в доктрине?

Miejsce лицо:

/** 
    * @var integer 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

/** 
    * @ORM\OneToOne(targetEntity="Miejsce\DomainBundle\Entity\Subdomains") 
    * @ORM\JoinColumn(name="id", referencedColumnName="rid") 
    * @var Subdomains 
    */ 
    protected $subdomain; 

Subdomain лицо:

class Subdomains 
{ 



    /** 
    * @var integer 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @ORM\Column(type="string") 
    * @var string 
    */ 
    private $name; 

    /** 
    * @ORM\Column(type="integer") 
    * @var integer 
    */ 
    private $rid; 

    /** 
    * @ORM\Column(type="integer") 
    * @var integer 
    */ 
    private $ridType; 

ответ

2

в Miejsce лицо:

/** 
* @ORM\OneToOne(targetEntity="Subdomains", mappedBy="miejsce") 
*/ 
private $subdomain; 

в Subdomains лица:

/** 
* @ORM\OneToOne(targetEntity="Miejsce", inversedBy="subdomain") 
* @ORM\JoinColumn(name="rid", referencedColumnName="id") 
*/ 
private $miejsce; 

также переименовывать Subdomains в Subdomain - имена сущностей должны быть особыми

+0

Это то, что я хочу, но не совсем. субдомен имеет множество связей - miejsce и другие сущности, поэтому добавление miejsce к субдомену сложно :) так что невозможно установить эту идею. –

+0

Его отношение OneToOne, поэтому у Miejsce есть субдомен и субдомен Miejsce - для этого должны быть соответствующие переменные в обоих объектах. Обратите внимание, что $ miejsce будет извлекаться только в том случае, если вы вызываете getMiejsce() (если вы создадите этот метод). Это не повредит работе, если вы не будете использовать его. Также нет необходимости в subdomain_id в Miejsce – domis86

+0

возможно, в доктрине существует другое отношение типа к i, которое можно использовать в этой ситуации? to i dont должен добавить дополнительные, не требуемые системой, но требуемые дублирующими дублирующимися ключами? –

0

Попробуйте с этим:

* @ORM\JoinColumn(name="subdomain_id", referencedColumnName="rid") 
+0

добавить новый столбец subdomain_id? в miejsce нет соединения subdomain_id строки, это miejsce.id = subdomain.rid –

+0

посмотреть: http: //docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#one-to- одно саморегуляция Нет необходимости в этом поле, оно будет использоваться для справочной колонки. и после схемы обновления он будет генерировать столбец в таблице ur. – hizbul25

+0

но это не selftoself ссылка –

Смежные вопросы