1

我有两张桌子:

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

从 product 到 products_images 表存在一对多关系

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

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

目前,我这样做了:

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

然后在树枝模板中:

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

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

4

1 回答 1

2

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

在视图中

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

在实体

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

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

于 2013-01-07T11:26:59.417 回答