我有两张桌子:
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 %}
我使用此循环来获取该产品的一个图像。我不认为这是有效的方法,因为我已经获取该产品的所有图像。 我想要做的只是从数据库中获取每个产品只有一个图像?我怎么能这样做?
答案 0 :(得分:2)
我会在Product-entity中添加另一种方法,例如getThumbnail
。这封装了哪个图像被视为缩略图的逻辑(即您的视图不包含是否显示第一个,最后一个或任何其他产品图像的任何逻辑,它只是询问产品的缩略图):
{% if product.thumbnail %}
{{ // Output the product.thumbnail-entity }}
{% endif %}
在实体
中public function getThumbnail ()
{
return $this->getImages()->first();
}
现在,在分析之后,如果您担心在仅显示单个图像/产品时加载完整图像集合,那么我将更新存储库DQL以仅获取单个图像的连接,或确保与图像的关联是EXTRA_LAZY