-2
DefaultFormHandler.php例外 '更新...':誠信約束衝突: '關鍵 '主要'
protected function onSuccess($object)
{
$artistmember= new ArtistMember();
$artistmember->setMemberId($object->getManager()->getId());
$artistmember->setArtistId($object->getId());
$this->em->merge($artistmember);
$this->em->flush();
return $object;
}
ArtistMember
/**
* @ORM\Entity
* @ORM\Table(name="artist_member")
*/
class ArtistMember
{
/**
* @ORM\Id
* @ORM\Column(name="artist_id", type="integer")
*/
private $artist_id;
/**
* @ORM\Column(name="member_id", type="integer")
*/
private $member_id;
/**
* @param mixed $artist_id
*/
public function setArtistId($artist_id)
{
$this->artist_id = $artist_id;
}
/**
* @param mixed $member_id
*/
public function setMemberId($member_id)
{
$this->member_id = $member_id;
}
}
1062重複條目'
entity artist get manager()
/**
* Set manager
*
* @param Member $manager
*/
public function setManager($manager)
{
$this->manager = $manager;
if (! $this->members->contains($manager)) {
$this->members->add($manager);
}
}
/**
* Get manager
*
* @return \MainBundle\Entity\Member
*/
public function getManager()
{
return $this->manager;
}
我有2個表:Artist
表和member
表
在artist table
我有id
和manager_id
和在member
表我有member_id
和artist_id
。
如果member
表只包含one artist_id
和member_id
,更新查詢可以正常工作。 例如:artist-id = 1,manager_id = 10。 但我得到上述錯誤,如果我嘗試更新任何經理的ID在這種情況下:
eg: artist_id=1
member_id=10
artist_id=1
member_id =20
如果我嘗試更新member id
20
到30
或10
到30
我得到的錯誤。 該解決方案解決了這個問題:但是還有更好的方法嗎?還有可能檢查artist_member和member_id是否已經存在於artist_member表中。
解決方案如果我這樣做:protected function onSuccess($ object) { $ sql =「UPDATE artist_member SET member_id =」。$ object-> getManager() - > getId()。「WHERE member_id =(從artist中選擇manager_id,其中id =「。$ object-> getId()。」)和artist_id =「。$ object-> getId(); $ stmt = $ this-> em-> getConnection() - > prepare($ sql); $ stmt-> execute(); $ this-> em-> persist($ object); $ this-> em-> flush(); return $ object; } – Programmer