2011-04-08 16 views
5

का चयन करें - सब ठीक है, कोई त्रुटिसिद्धांत 2 अद्यतन शामिल हों

$em = $this->get('doctrine.orm.entity_manager'); 

$query = $em->createQuery(" 
    SELECT c 
    FROM MyDemoBundle:Category c 
    LEFT JOIN c.projects p 
    WHERE c.isActive = true 
    AND p.id = 1 
"); 
$result = $query->getResult(); 

अद्यतन - अपवाद [semantical त्रुटि]

$query = $em->createQuery(" 
    UPDATE MyDemoBundle:Category c 
    LEFT JOIN c.projects p 
    SET c.isActive = false 
    WHERE p.id = ?1 
"); 
$query->setParameter(1, $id); 
$query->execute(); 

उत्तर

1

बायाँ शामिल हों, या विशेष रूप से जुड़ जाता है में ही समर्थित हैं MySQL के अद्यतन विवरण। डीक्यूएल सामान्य ansi एसक्यूएल का एक सबसेट abstracts, तो यह संभव नहीं है। उप-चयन के साथ प्रयास करें:

UPDATE MyDemoBundle:Category c SET c.isActive = false WHERE ?1 MEMBER OF c.projects; 

(सदस्य वास्तव में यहां उप-चयन में बदल रहा है)। अगर यह काम करता है तो मुझे 100% यकीन नहीं है, लेकिन यह शामिल होने की तुलना में अधिक पसंद है।

संबंधित मुद्दे