【发布时间】:2015-05-08 16:16:43
【问题描述】:
我的 symfony 类库中有这个功能:
public function findAllByIdShop($id)
{
return $this->getEntityManager()
->createQuery(
'SELECT s, c
FROM AppBundle:ShopCategory s
JOIN s.category c
WHERE s.shop = :shop_id
ORDER BY c.name'
)
->setParameter(':shop_id', $id)
->getResult();
}
查询将最后一个记录类别(别名 c)作为 NULL 值返回,如果我通过“SELECT s”更改选择行,我将通过教义延迟加载获得正确的结果,并且我想避免延迟加载。
例如,如果我在存储库查询中有四个名为“c1、c2、c3、c4”的类别,我将 c4 获取为 null。
我的班级看起来像那样(请注意,我使用多对一、单向关系来避免双向关系)
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* ShopCategory
*
* @ORM\Table()
* @ORM\Entity
*/
class ShopCategory
{
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Shop")
*/
private $Shop;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category")
*/
private $Category;
/**
* Set Shop
*
* @param AppBundle\Entity\Shop $Shop
* @return ShopCategory
*/
public function setShop(\AppBundle\Entity\Shop $Shop)
{
$this->Shop = $Shop;
return $this;
}
/**
* Get Shop
*
* @return AppBundle\Entity\Shop
*/
public function getShop()
{
return $this->Shop;
}
/**
* Set Category
*
* @param AppBundle\Entity\Category $Category
* @return ShopCategory
*/
public function setCategory(\AppBundle\Entity\Category $Category)
{
$this->Category = $Category;
return $this;
}
/**
* Get Category
*
* @return AppBundle\Entity\Category
*/
public function getCategory()
{
return $this->Category;
}
}
【问题讨论】:
标签: php mysql symfony doctrine-orm doctrine