Symfony中的DQL查询,用于ManyToOne单向关系

时间:2014-01-21 21:55:20

标签: sql symfony doctrine dql

class MenuItem
{
/**
* @ORM\Column(type="integer")
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO")
*/ 
protected $id; 

/**
* @ORM\ManyToOne(targetEntity="MenuCategory")
* @ORM\JoinColumn(name="menu_id", referencedColumnName="id")
*/
protected $catagory; 
}

类别类

class MenuCategory
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/ 
protected $id; 

/**
* @ORM\Column(type="string")
*/ 
protected $name; 

/**
* @ORM\Column(type="integer")
*/
protectted $ordering;
}

我想查询该类别中的订购属性订购的所有商品。这是我试过的查询。我是SQL / DQL的新手,不知道如何访问查询中的排序属性。此查询是MenuItemRepository.php文件。

class MenuItemRepository extends EntityRepository
{ 
public function getOrderedMenu() 
{ 
   return $this->createQueryBuilder('i')
        ->select('i')
        ->orderBy('i.catagory.ordering', 'ASC') //????
        ->getQuery()
        ->getResult()
}
}

有没有办法让订购的所有商品都订购?

1 个答案:

答案 0 :(得分:1)

您的orderBy子句中有 cat gory 而不是 cat e gory

在您的$ordering财产前面进一步受保护而不是受保护

以下内容应该有效:

return $this->createQueryBuilder('i')
    ->leftJoin('i.category', 'c')
    ->orderBy('c.ordering', 'ASC')
    ->getQuery()
    ->getResult();