2014-01-17 3 views
0

У меня есть таблица item с item_id, item_title, item_description, item_created, item_approved. У меня также есть таблица article с PK item_id (из таблицы товаров) и article_body.Где запрос + Доктрина

Теперь я хотел бы выбрать все статьи, где item.item_approved НЕ равно NULL. Но я застрял в создании запроса. Это то, что я сейчас:

$entityManager = $this->getDoctrine()->getManager(); 
$repository = $entityManager->getRepository('VolleyScoutBundle:Article'); 

$query = $repository->createQueryBuilder('a') 
    ->where('a.item.ItemApproved != NULL') 
    ->getQuery(); 

$articles = $query->getResult(); 

Это дало мне ошибку: [Syntax Error] line 0, col 73: Error: Expected =, <, <=, <>, >, >=, !=, got '.'

Это моя статья Entity:

<?php 

namespace VolleyScout\VolleyScoutBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Article 
* 
* @ORM\Table(name="article") 
* @ORM\Entity 
*/ 
class Article 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="article_body", type="text", nullable=false) 
    */ 
    private $articleBody; 

    /** 
    * @var \VolleyScout\VolleyScoutBundle\Entity\Item 
    * 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="NONE") 
    * @ORM\OneToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Item") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="item_id", referencedColumnName="item_id") 
    * }) 
    */ 
    private $item; 



    /** 
    * Set articleBody 
    * 
    * @param string $articleBody 
    * @return Article 
    */ 
    public function setArticleBody($articleBody) 
    { 
     $this->articleBody = $articleBody; 

     return $this; 
    } 

    /** 
    * Get articleBody 
    * 
    * @return string 
    */ 
    public function getArticleBody() 
    { 
     return $this->articleBody; 
    } 

    /** 
    * Set item 
    * 
    * @param \VolleyScout\VolleyScoutBundle\Entity\Item $item 
    * @return Article 
    */ 
    public function setItem(\VolleyScout\VolleyScoutBundle\Entity\Item $item) 
    { 
     $this->item = $item; 

     return $this; 
    } 

    /** 
    * Get item 
    * 
    * @return \VolleyScout\VolleyScoutBundle\Entity\Item 
    */ 
    public function getItem() 
    { 
     return $this->item; 
    } 
} 

Это мой Item Entity:

<?php 

namespace VolleyScout\VolleyScoutBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Item 
* 
* @ORM\Table(name="item", indexes={@ORM\Index(name="fk_item_users1_idx", columns={"user_id"}), @ORM\Index(name="fk_item_myteam1_idx", columns={"myteam_id"})}) 
* @ORM\Entity 
*/ 
class Item 
{ 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="item_title", type="string", length=255, nullable=false) 
    */ 
    private $itemTitle; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="item_description", type="text", nullable=false) 
    */ 
    private $itemDescription; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="item_created", type="datetime", nullable=false) 
    */ 
    private $itemCreated; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="item_approved", type="datetime", nullable=true) 
    */ 
    private $itemApproved; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="item_deleted", type="datetime", nullable=true) 
    */ 
    private $itemDeleted; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="item_id", type="bigint") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $itemId; 

    /** 
    * @var \VolleyScout\VolleyScoutBundle\Entity\Myteam 
    * 
    * @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Myteam") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="myteam_id", referencedColumnName="myteam_id") 
    * }) 
    */ 
    private $myteam; 

    /** 
    * @var \VolleyScout\VolleyScoutBundle\Entity\Users 
    * 
    * @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Users") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="user_id") 
    * }) 
    */ 
    private $user; 



    /** 
    * Set itemTitle 
    * 
    * @param string $itemTitle 
    * @return Item 
    */ 
    public function setItemTitle($itemTitle) 
    { 
     $this->itemTitle = $itemTitle; 

     return $this; 
    } 

    /** 
    * Get itemTitle 
    * 
    * @return string 
    */ 
    public function getItemTitle() 
    { 
     return $this->itemTitle; 
    } 

    /** 
    * Set itemDescription 
    * 
    * @param string $itemDescription 
    * @return Item 
    */ 
    public function setItemDescription($itemDescription) 
    { 
     $this->itemDescription = $itemDescription; 

     return $this; 
    } 

    /** 
    * Get itemDescription 
    * 
    * @return string 
    */ 
    public function getItemDescription() 
    { 
     return $this->itemDescription; 
    } 

    /** 
    * Set itemCreated 
    * 
    * @param \DateTime $itemCreated 
    * @return Item 
    */ 
    public function setItemCreated($itemCreated) 
    { 
     $this->itemCreated = $itemCreated; 

     return $this; 
    } 

    /** 
    * Get itemCreated 
    * 
    * @return \DateTime 
    */ 
    public function getItemCreated() 
    { 
     return $this->itemCreated; 
    } 

    /** 
    * Set itemApproved 
    * 
    * @param \DateTime $itemApproved 
    * @return Item 
    */ 
    public function setItemApproved($itemApproved) 
    { 
     $this->itemApproved = $itemApproved; 

     return $this; 
    } 

    /** 
    * Get itemApproved 
    * 
    * @return \DateTime 
    */ 
    public function getItemApproved() 
    { 
     return $this->itemApproved; 
    } 

    /** 
    * Set itemDeleted 
    * 
    * @param \DateTime $itemDeleted 
    * @return Item 
    */ 
    public function setItemDeleted($itemDeleted) 
    { 
     $this->itemDeleted = $itemDeleted; 

     return $this; 
    } 

    /** 
    * Get itemDeleted 
    * 
    * @return \DateTime 
    */ 
    public function getItemDeleted() 
    { 
     return $this->itemDeleted; 
    } 

    /** 
    * Get itemId 
    * 
    * @return integer 
    */ 
    public function getItemId() 
    { 
     return $this->itemId; 
    } 

    /** 
    * Set myteam 
    * 
    * @param \VolleyScout\VolleyScoutBundle\Entity\Myteam $myteam 
    * @return Item 
    */ 
    public function setMyteam(\VolleyScout\VolleyScoutBundle\Entity\Myteam $myteam = null) 
    { 
     $this->myteam = $myteam; 

     return $this; 
    } 

    /** 
    * Get myteam 
    * 
    * @return \VolleyScout\VolleyScoutBundle\Entity\Myteam 
    */ 
    public function getMyteam() 
    { 
     return $this->myteam; 
    } 

    /** 
    * Set user 
    * 
    * @param \VolleyScout\VolleyScoutBundle\Entity\Users $user 
    * @return Item 
    */ 
    public function setUser(\VolleyScout\VolleyScoutBundle\Entity\Users $user = null) 
    { 
     $this->user = $user; 

     return $this; 
    } 

    /** 
    * Get user 
    * 
    * @return \VolleyScout\VolleyScoutBundle\Entity\Users 
    */ 
    public function getUser() 
    { 
     return $this->user; 
    } 
} 

ответ

1

:

$query = $repository->createQueryBuilder('a') 
->join('a.item', 'i') 
->where('i.ItemApproved is not NULL') 
->getQuery(); 
+0

Спасибо, что сделал трюк! – nielsv

Смежные вопросы