2016-04-13 13 views
1

Doctrine'ın sorgu oluşturucusunu Symfony2 içinde varlıklarını almak için bir sorgu oluşturmak için kullanıyorum.) (Katılmak> I $ qb- hem AÇIK ve conditionType İLE denedimDOKTORA VEYA DOKTORA ÜZERİNDE LEFT JOIN ON Nasıl Yapılır

SELECT u0_.id AS id0 
FROM user u0_ 
LEFT JOIN rva_victims r3_ ON u0_.id = r3_.user_id 
INNER JOIN rva r1_ ON r1_.id = r3_.rva_id or u0_.id = r1_.declarant_id 

, ama hiçbir şey iş:

Ben MySQL bu sonucu elde etmek için çalışıyorum.

Sorunumu çözecek herhangi bir fikir var mı?

cevap

1

Çözüm oldukça basit olmalıdır. Senin durumunda bu respository sınıfta you§re varsayarak bu gibi görünmelidir:

$this 
    ->createQureyBuilder('u') 
    ->leftJoin(Victims::class, 'v', Query\Expr\Join::WITH, 'v.user = u.id') 
    ->join(Rva::class, 'r', Query\Expr\Join::WITH, 'r.id = v.rva OR u.id = r.declarant'); 

Bu sorunsuz çalışır, Sadece, şu anda sınıf isimleri varsayıyorum. Ayrıca, tüm koşulların sütun isimleri değil, sınıf öznitelik adlarında (DQL) yapıldığını göz önünde bulundurun.

+0

Benim sorundur varlık Depodaki bir sorgu oluşturucu oluşturarak bunu mağdurları ve RvA aynı varlık içindedir olabilir. Aslında, Rva @ ManyToMany ("Kullanıcı") ve bir decrulnt özniteliği Rva @ ManyToOne ("Kullanıcı") içeren bir kurban özniteliği içeren Rva varlığım var. Aynı talebe tüm kurbanları ve beyanı almam gerekiyor. içinde Benim sorunum senin katılmak İLE ben sonuç almak çünkü geçerli: İÇ RVA r4_ AÇIK u0_.id = r4_.declarant_id VE (? r4_.declarant_id IN() VEYA u0_.id = r4_.declarant_id) – KeurbyCandy

+0

KATILIN Can Lütfen ilgili model tanımlarıyla sorunu günceller misiniz? Problemin ne olduğu daha açık olacaktır. –

0

Sen

$qb = $this->createQueryBuilder('u') 
    ->leftJoin('yourbundle:Entityname', 'ye', 'WITH', 'u0_.id = r3_.user_id') 
    ->innerJoin('yourbuncle:entityname', 'yen', 'WITH', 'r1_.id = r3_.rva_id', 'OR', 'u0_.id = r1_.declarant_id'); 
+0

"Semantik Hatalar" satırı 0, sütun 155 'ORTA ILE rvaD.declarant' değerine ulaştım: Hata: 'VEYA' bir Sınıf işaret etmiyor. ' – KeurbyCandy

+0

Bu gibi girmeyi denediniz mi' r1_.id = r3_. rva_id OR u0_.id = r1_.declarant_id '... ayrıca mysql istemcisindeki bu sql sorgusuyla istediğiniz satırları aldınız mı? – Sasser