【发布时间】:2013-12-18 10:33:14
【问题描述】:
在我的项目中,我有一个名为 service_provider 的表。每个服务提供商都有一个评级系统。
我的服务提供商实体,
class ServiceProviders
{
/**
* @var integer
*
* @ORM\Column(name="service_provider_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $serviceProviderId;
/**
* @var \Ratings
*
* @ORM\OneToOne(targetEntity="Ratings",inversedBy="serviceProviders",cascade={"all"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="service_provider_id", referencedColumnName="service_provider_id")
* })
*/
private $ratings;
}
我的评级实体,
class Ratings
{
/**
* @var integer
*
* @ORM\Column(name="service_provider_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $serviceProviderId;
/**
* @var \ServiceProviders
*
* @ORM\OneToOne(targetEntity="ServiceProviders",mappedBy="ratings",cascade={"all"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="service_provider_id", referencedColumnName="service_provider_id")
* })
*/
private $serviceProviders;
}
在我的 serviceProviderEntity 中,我编写了一个连接查询来获取所有数据。
class ServiceProvidersRepository extends EntityRepository
{
public function findAllProviders($where,$order,$rowCount,$page)
{
$query = $this->createQueryBuilder('s')
->select('s')
->leftJoin('s.ratings','r')
->where('s.status= :status')
->andWhere($where)
->setParameter('status', 'A')
->orderBy($order)
->setMaxResults($rowCount)
->setFirstResult($offset)
->getQuery();
$result = $query->getResult();
}
}
一切正常,但是当评级表中没有与服务提供商对应的数据时,twig模板出现错误'找不到实体'。任何人都可以帮助我,如何解决这个问题。
我的控制器动作,
public function providerSearchAction()
{
$pagination = $entityManager->getRepository('EvpEventpriceBundle:ServiceProviders')->findAllProviders($where,'s.serviceProviderId',$rowCount,$page);
return $this->render('EvpEventpriceBundle:ServiceProviders:search.html.twig',array('pagination'=>$pagination));
}
还有我的树枝模板,
{% for provider in pagination %}
{% for i in 0..4 %}
{% if provider.ratings|length %}
{% if (i<((provider.ratings.totalValue/provider.ratings.totalVotes)|number_format)-0.5) %}
{% set class = "ratings_stars ratings_vote" %}
{% else %}
{% set class = "ratings_stars" %}
{% endif %}
{% endif %}
<div class="star_{{i+1}} {{class}}"></div>
{% endfor %}
{% endfor %}
【问题讨论】:
-
你可以添加你的树枝模板吗?
-
请您的控制器操作也一样
标签: mysql symfony doctrine-orm twig