用symfony 2编写教义查询

时间:2013-01-07 11:11:26

标签: symfony doctrine-orm

我有两张桌子:

  products       products_images
   -id            -id
   -name          -product_id
                  -image_name

从产品到products_images表有一对多关系

我创建了两个实体,其关系定义为:Product和ProductImage

我需要获取产品及其图像的列表,但是将图像数量的记录限制为1。

目前,我这样做了:

$product = $this->getDoctrine()
            ->getRepository('TestBundle:Product');

然后在树枝模板中:

{% for image in product.images if loop.first %}
{% endfor %}

我使用此循环来获取该产品的一个图像。我不认为这是有效的方法,因为我已经获取该产品的所有图像。 我想要做的只是从数据库中获取每个产品只有一个图像?我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

我会在Product-entity中添加另一种方法,例如getThumbnail。这封装了哪个图像被视为缩略图的逻辑(即您的视图不包含是否显示第一个,最后一个或任何其他产品图像的任何逻辑,它只是询问产品的缩略图):

视图中的

{% if product.thumbnail %}
  {{ // Output the product.thumbnail-entity }}
{% endif %}

在实体

public function getThumbnail ()
{
   return $this->getImages()->first();
}

现在,在分析之后,如果您担心在仅显示单个图像/产品时加载完整图像集合,那么我将更新存储库DQL以仅获取单个图像的连接,或确保与图像的关联是EXTRA_LAZY