2014-10-08 16 views
6

Tutarsız eşlemelerde sorun yaşıyorum. Başvurumda iki kişi var - İrtibat (irtibat kişilikleriyle ...) ve Bilgi, bu kişiyle ilgili bilgileri olan kuruluşlar (telefonlar, e-postalar, faks, web siteleri vb.). Bu şekilde çok daha kolaydır çünkü Eşleşmeler, birbiriyle tutarsız

Ve her tip için değişkenler yapılmış benim İletişim varlık olarak

, benim uygulamasında gerekir:
/** 
* @ORM\OneToMany(targetEntity = "RelationInformations" , mappedBy = "objectID", cascade={"persist"}) 
*/ 
protected $contactInformations; 

/** 
* @ORM\OneToMany(targetEntity = "RelationInformations" , mappedBy = "objectID", cascade={"persist"}) 
*/ 
protected $contactPhone; 

/** 
* @ORM\OneToMany(targetEntity = "RelationInformations" , mappedBy = "objectID", cascade={"persist"}) 
*/ 
protected $contactFax; 

/** 
* @ORM\OneToMany(targetEntity = "RelationInformations" , mappedBy = "objectID", cascade={"persist"}) 
*/ 
protected $contactWebsite; 

/** 
* @ORM\OneToMany(targetEntity = "RelationInformations" , mappedBy = "objectID", cascade={"persist"}) 
*/ 
protected $contactEmail; 

/** 
* @ORM\OneToMany(targetEntity = "RelationInformations" , mappedBy = "objectID", cascade={"persist"}) 
*/ 
protected $contactCommunicator; 

Ve telefonları için örnek gaz giderici için

benziyor:

/** 
* Get contactPhone 
* 
* @return \Doctrine\Common\Collections\Collection 
*/ 
public function getContactPhone() 
{ 
    if ($this->contactPhone !== null) { 
     foreach ($this->contactPhone->toArray() as &$info) { 
      if ($info->getType() !== RelationInformations::TYPE_TELEPHONE) { 
       $this->contactPhone->removeElement($info); 
      } 
     } 
    } 

    return $this->contactPhone; 
} 

Bu şekilde, yalnızca bu işlevi kullanarak bilgilerimdeki telefonlara sahibim, böylece istediğim şeyi almak için uygulamadaki diğer yerlerde çok daha kolay.

RelationInformation Varlık:

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

/** 
* @var integer 
* @ORM\ManyToOne(targetEntity = "RelationContact" , inversedBy = "contactInformations") 
* @ORM\JoinColumn(name = "rnis_object_id" , referencedColumnName="rnct_id", nullable = false); 
*/ 
private $objectID; 

/** 
* @var string 
* @ORM\Column(name = "rnis_value" , type = "string" , nullable = false ) 
*/ 
private $value; 

/** 
* @var string 
* @ORM\Column(name = "rnis_type" , type = "string" , nullable = false , length = 1) 
*/ 
private $type; 

/** 
* @var boolean 
* @ORM\Column(name = "rnis_active" , type = "boolean" , nullable = false) 
*/ 
private $active; 

/** 
* @var boolean 
* @ORM\Column(name = "rnis_default" , type = "boolean" , nullable = false) 
*/ 
private $default; 

/** 
* @var string 
* @ORM\Column(name = "rnis_txt" , type = "string" , nullable = true) 
*/ 
private $txt; 

/** 
* @var integer 
* @ORM\Column(name = "rnis_type_private_business" , type = "integer" , nullable = true) 
*/ 
private $typePrivateBusiness; 

sorun benim profilcisine i bağırma gibi hatalar görebilirsiniz olmasıdır. Uygulama doğru çalışıyor ancak bu sorunu çözmek istiyorum.

The mappings RelationContact#contactPhone and RelationInformations#objectID are inconsistent with each other. 
The mappings RelationContact#contactFax and RelationInformations#objectID are inconsistent with each other. 
The mappings RelationContact#contactWebsite and RelationInformations#objectID are inconsistent with each other. 
The mappings RelationContact#contactEmail and RelationInformations#objectID are inconsistent with each other. 
The mappings RelationContact#contactCommunicator and RelationInformations#objectID are inconsistent with each other. 
The mappings RelationContact#contactBrand and RelationInformations#objectID are inconsistent with each other. 
+0

ben eklemek zorunda, Varlık 'RelationInformations' – Matteo

+0

Tamam kodunu gönderin;) –

cevap

8

Aynı mappedby tuş üzerinde aynı OneToMany ilişkilerini eşleyemezsiniz, böylece doktrin haritalama doğrulama beahviour doğru ilk contactInformations referansı geçmek ve diğer başarısız olmaktır. bu yardım Doctrine2 doc reference

Hope açıklandığı gibi

deneyin One-To-Many, Unidirectional with Join Table olarak varlıkları haritaya

+1

Bana verdiği bir fikri nasıl çözeceğimi, şimdi deneyeceğim ve daha fazla şey bildiğim zaman yazacağım ;-) –

+0

Her şey yolunda görünüyor ama ... Formumda 'contactPhone' ile eşlenmiş form koleksiyonum var. Telefonlar doğru görünüyor ama telefon eklemek istediğimde, 'ClassMetadata'da' contactPhone gibi bir anahtarın bulunmadığı konusunda bir hatam var (çünkü artık hiçbir ilişki yok, dolayısıyla bu koleksiyon 'doğal' değil). Herhangi bir fikir Matteo? :-) –

+1

"Bire Kadar, Tek Yönlü ve Tek Yönlü Tablo" olarak adlandırılan doktrin2 ilişkilerine bakın ve gereksinimlerinizi karşılayıp karşılamadığına bakın. – Matteo