Hi, read a manual with MEMBER OF function, I think in your case it should fit
On Thu, Jun 16, 2011 at 6:04 AM, oscar balladares <liebegr...@gmail.com>wrote: > Hi everybody! > > This might go in the Doctrine's mailing list, but knowing you all S2 people > are working with Doctrine 2, I'm feeling > lucky that you could help me out. > > This is the kind of stuff I want to achieve: > > DQL: delete VendorBundle:Photo p JOIN p.bedrooms bp JOIN bp.bedroom b > where b.id = 13 > > What debugger say: > > Error: Expected end of string, got 'JOIN' > > A little background: > > I have 3 entities, two are main entities, and the last one is a bridge > between the firsts. > > 1) Bedroom > 2) Photo > 3)Bedroom_photo > > bedroom_photo is some sort of the many to many relationship between 1 and > 2. But 1 and 2 are not associated directly > like a real many to many because 3 has an extra property. The association > may be described like a oneToMany-ManyToOne. > > A bedroom can have many photos and a photo can be owned by many bedrooms > (the client could use a photo to describe many bedrooms). > This association allow a photo to be uploaded without being explicitly > related to any bedroom. > > 3rd entity's mapping is: > > fields: > is_public: > type: boolean > > manyToOne: > bedroom: > targetEntity: Vendor\VendorBundle\Entity\Bedroom > inversedBy: photos > photo: > targetEntity: Vendor\VendorBundle\Entity\Photo > inversedBy: bedrooms > > > The associations are bidirectional. > > > So What I want is if a client tries to delete a bedrooms, prompt him also > to choose to delete only the photo association info (rows on bedroom_entity) > or > to delete actually the associated photos (also delete associated rows on > photo). I'm stucked trying to find a solution for last problem. > > I also tried: > > DQL: DELETE VendorBundle:Photo p WHERE p.id IN (SELECT ph.id FROM > VendorBundle:Photo ph JOIN ph.bedrooms bp JOIN bp.bedroom b WHERE b.id = > :id) > > Debugger says: > > General error: 1093 You can't specify target table 'foto' for update in > FROM clause > > That is a known mysql issue. I digged a little bit and found you can't > update/delete from a table which clause is making reference to it. > > I also tried: > > DQL: DELETE VendorBundle:Photo p WHERE p.id IN (SELECT bp.photo_id FROM > VendorBundle:BedroomPhoto bp JOIN bp.bedroom b WHERE b.id = :id) > > Error: Class Vendor\VendorBundle\Entity\BedroomPhoto has no field or > association named photo_id > > This is because the relation between Photo and BedroomPhoto is through a > mapping: photos, and doctrines doesn't see it as a property (the photo_id > column). > > How the heck can I delete a bedroom's photos in one query? > > Doing > > foreach(bedroom->getBedroomPhotos() as $bp) { $em->remove($bp->getPhoto()); > } $em->flush() ; > > That fires 2 queries for each photo that a bedroom has, the first one is to > remove the photo, and the 2nd to remove the relation on bedroom_photo (I > have setted > a cascade deletion on bedroom-bedroomPhoto, but running the code above > doesn't triggers it). > > Anyway, I would want to do it in one query. > > Any help, advice or constructive criticism would be greatfully welcome :D > > Regards. > > -- > If you want to report a vulnerability issue on symfony, please send it to > security at symfony-project.com > > You received this message because you are subscribed to the Google > Groups "symfony users" group. > To post to this group, send email to symfony-users@googlegroups.com > To unsubscribe from this group, send email to > symfony-users+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/symfony-users?hl=en > -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en