douyong1885 2014-01-17 13:10
浏览 30
已采纳

where query + Doctrine

I have table item with item_id, item_title, item_description, item_created, item_approved. I also have a table article with PK item_id (from item table) and article_body.

Now I would like to select all the articles where item.item_approved is NOT equal to NULL. But I'm stuck with creating the query. This is what I have now:

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

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

$articles = $query->getResult();

This gave me the error: [Syntax Error] line 0, col 73: Error: Expected =, <, <=, <>, >, >=, !=, got '.'

This is my Article 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;
    }
}

This is my 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条回答 默认 最新

  • douyong5476 2014-01-17 13:12
    关注

    try:

    $query = $repository->createQueryBuilder('a')
    ->join('a.item', 'i')
    ->where('i.ItemApproved is not NULL')
    ->getQuery();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路