2016-04-10 17 views
-1

私はちょっと混乱しています。なぜこれが動作しないのですか?Symfony - 参加者を伴うクエリビルダー

私は2つのエンティティ、1つのエンティティはユーザーと呼ばれ、1つはエンティティと呼ばれます。 1人のユーザーは1つのユーザーに属し、1つの小屋は1人のユーザーに属します。

彼らは私が達成したい何ManyToOne

class User 
{ 

/** 
* @var boolean 
* 
* @ORM\Column(columnDefinition="TINYINT(1) NOT NULL") 
*/ 
protected $active = true; 


/** 
    * @ORM\OneToMany(targetEntity="AppBundle\Entity\Shed", mappedBy="user") 
    */ 
    protected $shed; 
} 

class Shed 
{ 
    /** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="shed") 
* @ORM\JoinColumn(name="user", referencedColumnName="id", onDelete="CASCADE") 
* 
* @var User 
*/ 
protected $user; 

/** 
* @var boolean 
* 
* @ORM\Column(columnDefinition="TINYINT(1) NOT NULL") 
*/ 
protected $published = false; 
} 

に接続されているが、私は公開されているアクティブなユーザーからの最新の3つの小屋を問い合わせること、です。

class ShedRepository 
{ 
    public function getNewestSheds() 
    { 
     $query = $this->createQueryBuilder('s') 
      ->join('AppBundle:User', 'u') 
      ->andWhere('u.active = 1') 
      ->andWhere('s.published = 1') 
      ->orderBy('s.createdAt', 'DESC') 
      ->setMaxResults(3) 
      ->getQuery(); 

     return $query->getResult(); 
     } 
} 

shed.publishedプロパティが0である小屋が示されていない:私のShedRepositoryで

iは、次のような方法があります。シェッドが公開されていてもユーザーがアクティブでない場合、シェッドも表示されますが、表示されません。 誰も助けてくれますか?

active属性の正しい注釈があるべき

答えて

1

/** 
* @var boolean 
* 
* @ORM\Column(name="active", type="boolean", columnDefinition="TINYINT(1) NOT NULL") 
*/ 

(あなたは属性がマッピングされていないので、それは常に本当だった作られた列の名前と型を指定するのを忘れて)

アナとShedエンティティの公開属性。

EDIT(正解):

あなたは間違って()の呼び出しに参加しています。 ->join('s.user', 'u')

+0

trueでない場合は、 カラムを指定するためにcolumnDefinitionsを使用することもできます。 属性はデフォルト値がfalseに設定されています:) 変更しても私の問題は解決しません:( – Sharpy35

+0

条件の場合は '1'の代わりに' TRUE'を使用してください。例えば ' - > andWhere ( 'u.active = TRUE') ' – Miro

+0

これは試しましたが、何が間違っているのか分からず、公開された制約は機能していますが、アクティブではありません。( – Sharpy35

関連する問題