Hi everyone
I try top update the exists entity by using entity merge, with another
normal entity everything fine, but when i create the entities
with Inheritance type SINGLE_TABLE,
the entity merge just working with all the fields in mapper entity only,
and all the parent class field cannot update. I'm already check the problem
came from entity merge.
Please check the code below, all the field in ProfilePersonEntity &
ProfileCompanyEntity update after merge but all the field in ProfileEntity
didn't update anything.
Somebody can help to know where the problem came from, doctrine or my code.
Thank you very much...
Regards,
Brian
ProfileEntity.php
namespace CMS\Entity;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Table;
use Doctrine\ORM\Mapping\InheritanceType;
use Doctrine\ORM\Mapping\DiscriminatorColumn;
use Doctrine\ORM\Mapping\DiscriminatorMap;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\OneToMany;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @Entity
* @Table(name="PROFILE")
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({
* "Profile" = "ProfileEntity",
* "ProfilePerson" = "ProfilePersonEntity",
* "ProfileCompany" = "ProfileCompanyEntity"
* })
*/
class ProfileEntity extends LockableEntity {
/**
* @Column(name="TYPE", type="string", length=15)
* @Assert\NotBlank
*/
private $type;
/**
* @Column(name="NAME", type="string", length=45)
* @Assert\NotBlank
*/
private $name;
/**
* @Column(name="PLACE_OF_ISSUE", type="string", length=45)
*/
private $placeOfIssue;
/**
* @Column(name="DATE_OF_ISSUE", type="timestamp")
*/
private $dateOfIssue;
/**
* @Column(name="NATIONALITY", type="string", length=3)
*/
private $nationality;
/**
* @OneToMany(targetEntity="PhoneEntity", mappedBy="profile",
cascade={"all"})
*/
private $phones;
/**
* @OneToMany(targetEntity="EmailEntity", mappedBy="profile",
cascade={"all"})
*/
private $emails;
/**
* @OneToMany(targetEntity="WebsiteEntity", mappedBy="profile",
cascade={"all"})
*/
private $websites;
/**
* @OneToMany(targetEntity="AddressProfileEntity", mappedBy="profile",
cascade={"all"})
*/
private $addresses;
public function __construct() {
$this->phones = new ArrayCollection();
$this->emails = new ArrayCollection();
$this->websites = new ArrayCollection();
$this->addresses = new ArrayCollection();
}
public function getType() {
return $this->type;
}
public function setType($type) {
$this->type = $type;
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
}
public function getPlaceOfIssue() {
return $this->placeOfIssue;
}
public function setPlaceOfIssue($placeOfIssue) {
$this->placeOfIssue = $placeOfIssue;
}
public function getDateOfIssue() {
return $this->dateOfIssue;
}
public function setDateOfIssue($dateOfIssue) {
$this->dateOfIssue = $dateOfIssue;
}
public function getNationality() {
return $this->nationality;
}
public function setNationality($nationality) {
$this->nationality = $nationality;
}
public function getPhones() {
return $this->phones;
}
public function setPhones($phones) {
$this->phones = $phones;
}
public function getEmails() {
return $this->emails;
}
public function setEmails($emails) {
$this->emails = $emails;
}
public function getWebsites() {
return $this->websites;
}
public function setWebsites($websites) {
$this->websites = $websites;
}
public function getAddresses() {
return $this->addresses;
}
public function setAddresses($addresses) {
$this->addresses = $addresses;
}
public function getFullname() {
return (method_exists($this, 'getLastName') ? $this->getLastName().' '
: '').$this->name;
}
}
==============================================================================================
ProfilePersonEntity.php
namespace CMS\Entity;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Column;
/**
* @Entity
*/
class ProfilePersonEntity extends ProfileEntity {
/**
* @Column(name="LAST_NAME", type="string", length=45)
*/
private $lastName;
/**
* @Column(name="GENDER", type="string", length=9)
*/
private $gender;
/**
* @Column(name="BIRTHDAY", type="timestamp")
*/
private $birthday;
/**
* @Column(name="IDENTITY_NUMBER", type="string", length=45)
*/
private $identityNumber;
/**
* @Column(name="PASSPORT_NUMBER", type="string", length=45)
*/
private $passportNumber;
public function __construct() {}
public function getLastName() {
return $this->lastName;
}
public function setLastName($lastName) {
$this->lastName = $lastName;
}
public function getGender() {
return $this->gender;
}
public function setGender($gender) {
$this->gender = $gender;
}
public function getBirthday() {
return $this->birthday;
}
public function setBirthday($birthday) {
$this->birthday = $birthday;
}
public function getIdentityNumber() {
return $this->identityNumber;
}
public function setIdentityNumber($identityNumber) {
$this->identityNumber = $identityNumber;
}
public function getPassportNumber() {
return $this->passportNumber;
}
public function setPassportNumber($passportNumber) {
$this->passportNumber = $passportNumber;
}
}
==============================================================================================
ProfileCompanyEntity.php
namespace CMS\Entity;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Column;
/**
* @Entity
*/
class ProfileCompanyEntity extends ProfileEntity {
/**
* @Column(name="ENGLISH_NAME", type="string", length=45)
*/
private $englishName;
/**
* @Column(name="TAX_CODE", type="string", length=45)
*/
private $taxCode;
/**
* @Column(name="BUSINESS_REGISTRATION_CODE", type="string", length=45)
*/
private $businessRegistrationCode;
public function __construct() {}
public function getEnglishName() {
return $this->englishName;
}
public function setEnglishName($englishName) {
$this->englishName = $englishName;
}
public function getTaxCode() {
return $this->taxCode;
}
public function setTaxCode($taxCode) {
$this->taxCode = $taxCode;
}
public function getBusinessRegistrationCode() {
return $this->businessRegistrationCode;
}
public function setBusinessRegistrationCode($businessRegistrationCode) {
$this->businessRegistrationCode = $businessRegistrationCode;
}
}
--
You received this message because you are subscribed to the Google Groups
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.