2011-10-10 16 views
5

Sorgum var doctirne 2. Kullanıcılar, özel veya genel bir durum alanı var. i anda tüm yorumları kamu ve özel durumu = kimliği = geçerli kullanıcı kimliği oturum halinde (biliyorum ki, $ loggerUserVarID)doctrine 2 - sorgu oluşturucu koşullu sorgular ... If deyimleri?

$q = $this->em->createQueryBuilder() 
      ->select('c') 
      ->from('\Entities\Comments', 'c') 
      ->leftJoin('c.users', 'u') 
      ->where('status = public') ??? display all public comments but private if it belpongs to the logged in user.? 
      ->setParameter(1, $loggerUserVarID) 
      ->getQuery(); 

bu sorguyu çalıştırmak ve görüntülemek mümkün istiyorum , Eğer sonuçları al sonra bir if deyimi kullanıyorum, bu sorgu içinde bir if deyimi yapmak için bir yolu var mı?

+0

nedir rahatsız edici:

gibi bir şey Ne muhtemelen istediğiniz nedir? İşe yarayacak mı? Yorum yapabilmek için sadece bir kullanıcı (kullanıcı) var mı? – Max

cevap

8

Bu nedenle, "Durum 'public' ise veya ownerId $ logUserVarID" ise, geri dönmek istiyor musunuz?

$ logoutUserVarID öğesiyle eşleşen eşleşme durumuyla gerçekten ilgilenmediğinizi unutmayın.

querybuilder ve dql belgelerini inceleyin. Koşulları nasıl karmaşık hale getireceklerini oldukça açık bir şekilde açıklıyorlar. birden çok kullanıcı bir yorumun eşlenir demektir - Yorum Bir kullanıcılar özelliği vardır:

$q = $this->em->createQueryBuilder() 
      ->select('c') 
      ->from('\Entities\Comments', 'c') 
      ->join('c.users', 'u') 
      ->where(
       $qb->expr()->orX(
        $qb->expr()->eq('status','public'), 
        $qb->expr()->eq('u.id',$loggedInUser) 
       ) 
      ) 
     ->setParameter(1, $loggerUserVarID) 
     ->getQuery();