Thanks, I'll try to digg into it.

2011/6/16 Gediminas Morkevicius <gediminas.morkevic...@gmail.com>

> 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
>

-- 
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