सबसे पहले, मेरी गरीब अंग्रेजी के लिए खेद है ...(doctrine2 + symfony2) व्यापक निकालें: अखंडता बाधा उल्लंघन 1451
मैं चार संस्थाओं मिला: उपयोगकर्ता, आवेदन, बंडल & इकाई। यहाँ उनके संबंधों हैं (व्यापक जारी रहती है & निकालना, नीचे दिए गए कोड देखें):
- उपयोगकर्ता 1-एन आवेदन
- आवेदन 1-एन बंडल
- बंडल 1-एन इकाई
यह ठीक काम कर रहा है। लेकिन एक उपयोगकर्ता के पास अपनी दो इकाइयां डिफ़ॉल्ट रूप से हो सकती हैं, और मुझे उन्हें सीधे एक्सेस करने की आवश्यकता है।
तो मैं एक 1-1 संबंध के साथ उपयोगकर्ता दो क्षेत्रों, ENTITY1 & ENTITY2 पर जोड़ने के लिए,। और अब मेरी ऐप्लिकेशन क्रैश:
An exception occurred while executing 'DELETE FROM bundle WHERE id = ?' with params {"1":13}:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`misc`.`entity`, CONSTRAINT `FK_E284468F1FAD9D3` FOREIGN KEY (`bundle_id`) REFERENCES `bundle` (`id`))
मैं this post में स्थापित किया उन सहित कई चीज़ें करने की कोशिश की, लेकिन मैं इसे ठीक करने के लिए सक्षम नहीं था।
किसी भी मदद का स्वागत है, अग्रिम धन्यवाद।
संपादित करें: उपयोगकर्ता की ENTITY1 & ENTITY2 अशक्त हो सकता है: मैं करते रहे कि उपयोगकर्ता-> इकाई संबंधों optionnal हैं की जरूरत है। त्रुटि तब भी होती है जब वे दोनों शून्य हों।
# User :
/**
* @ORM\OneToMany(targetEntity="\sfCommands\ContentBundle\Entity\Application", mappedBy="user", cascade={"remove"}, orphanRemoval=true)
* @ORM\OrderBy({"name" = "ASC"})
*/
protected $applications;
/**
* @ORM\OneToOne(targetEntity="\sfCommands\ContentBundle\Entity\Entity")
* @ORM\JoinColumn(name="entity1_id", referencedColumnName="id")
*/
private $entity1;
/**
* @ORM\OneToOne(targetEntity="\sfCommands\ContentBundle\Entity\Entity")
* @ORM\JoinColumn(name="entity2_id", referencedColumnName="id")
*/
private $entity2;
#Application :
/**
* @ORM\OneToMany(targetEntity="\sfCommands\ContentBundle\Entity\Bundle", mappedBy="application", cascade={"remove"}, orphanRemoval=true)
* @ORM\OrderBy({"name" = "ASC"})
*/
protected $bundles;
/**
* @ORM\ManyToOne(targetEntity="\sfCommands\UserBundle\Entity\User", inversedBy="applications", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
#Bundle :
/**
* @ORM\ManyToOne(targetEntity="\sfCommands\ContentBundle\Entity\Application", inversedBy="bundles", cascade={"persist"})
* @ORM\JoinColumn(name="application_id", referencedColumnName="id")
*/
protected $application;
/**
* @ORM\OneToMany(targetEntity="\sfCommands\ContentBundle\Entity\Entity", mappedBy="bundle", cascade={"remove"}, orphanRemoval=true)
* @ORM\OrderBy({"name" = "ASC"})
*/
protected $entitys;
#Entity :
/**
* @ORM\ManyToOne(targetEntity="\sfCommands\ContentBundle\Entity\Bundle", inversedBy="entitys", cascade={"persist"})
* @ORM\JoinColumn(name="bundle_id", referencedColumnName="id")
*/
protected $bundle;
कोई मौका द्वारा किया bundle_id आप निकालना संस्थाओं युग्मित है की कोशिश की यह किसी भी उपयोगकर्ता क्षेत्र में एक इकाई भी थी? (entity1_id या entity2_id) – Pankrates
बंडल के बच्चे (इकाई) उपयोगकर्ता फ़ील्ड (entity1_id या entity2_id) में नहीं हैं, भले ही विफल हो जाएं। कैस्केडिंग की तरह लगता है बिल्कुल काम नहीं कर रहा है। – bgaze