एक ऐसी इकाई को विलय करने के बाद जिसमें संबंधों के संबंध में संबंधित इकाइयां संबंधित हैं और दोनों परिचालनों को विलय कर रहे हैं तो संबंध खो गए हैं!सिद्धांत 2.1 - कई टोमनी कैस्केड मर्ज के बाद रिलेशन खो गया - सिम्फनी 2
class Event implements NormalizableInterface
{
/**
* @ORM\ManyToMany(targetEntity="Participant", inversedBy="events", cascade={"persist", "merge"})
* @ORM\JoinTable(name="event_participant",
* joinColumns={@ORM\JoinColumn(name="event_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="participant_id", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
private $participants;
}
class Participant implements NormalizableInterface
{
/**
* @ORM\ManyToMany(targetEntity="Event", mappedBy="participants", cascade={"persist", "merge"})
*/
protected $events;
}
यहाँ मेरी मिलती हैं::
foreach ($events as $event)
{
if (!$event->hasParticipant($participant)) {
$event->addParticipant($participant);
}
if (!$participant->hasEvent($event)) {
$participant->addEvent($event);
}
}
यहाँ मेरी मर्ज कोड है:
echo "Before merge participant count: ".count($event->getParticipants()).PHP_EOL;
$event = $em->merge($event);
echo "After merge participant count: ".count($event->getParticipants()).PHP_EOL;
... और यहां उत्पादन होता है
यहाँ संस्थाओं कर रहे हैं:
Before merge participant count: 2
After merge participant count: 0
..और डेटाबेस इस तरह दिखता है:
table | rows
-------------------------------
event | 1
-------------------------------
participant | 2
-------------------------------
event_participant | 0
-------------------------------
किसी को भी देख सकते हैं, जहां मैं गूंगा जा रहा हूँ?
बीटीडब्ल्यू इस से अधिक रिश्ते हैं। स्पष्टीकरण स्पष्ट करने के लिए मैंने यहां चीजों को सरल बना दिया है। विलय से मेरे अन्य संबंध नकारात्मक रूप से प्रभावित नहीं होते हैं। इसके अलावा मैं कंसोल कमांड में मर्ज कर रहा हूं कंट्रोलर में नहीं। अगर यह :)
इसके अलावा, मैं सिद्धांत 2.1.7 और Symfony 2.0.15
बहुत धन्यवाद, मैथ्यू
सिद्धांत ORM प्रलेखन, बजाय निजी एक की रक्षा की संपत्तियों का उपयोग करने के मर्ज के एक मामले में सलाह देते हैं। मुझे लगता है कि कोशिश करने लायक है। इसके अलावा, आप मर्ज का उपयोग क्यों कर रहे हैं? – AdrienBrault