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

Reply via email to