[英]Symfony2 Doctrine2 how to add object if not fetched from db
[英]Symfony2 / Doctrine - How to append an extra field to fetched objects
有四種模型:
由DoctrineExtensions \\ Taggable \\ Taggable生成
在生產者存儲庫中,我想獲取帶有與其產品相關的標簽的生產者列表:
array(
array( // Producer
'id' => 1,
'name' => 'Producer A',
'description' => '...',
'tags' => array(
array( // Tag
'id' => 1,
'name' => 'Tag A'
),
array(...)
)
),
array(...)
)
並且我希望能夠為生產者標簽中的標簽鍵入{%for tag。{{tag.name}} {%endfor%}
我可以像下面這樣進行SQL查詢(這是一個臨時解決方案):
$rsm = new ResultSetMapping;
$rsm->addScalarResult('id', 'id');
$rsm->addScalarResult('name', 'name');
$rsm->addScalarResult('slug', 'slug');
$rsm->addScalarResult('tags', 'tags');
$sql = 'SELECT p.id as id, p.name as name, p.slug as slug, GROUP_CONCAT(DISTINCT t.`name` ORDER BY t.`name` ASC SEPARATOR "||") as tags
FROM `es_producer` as p
LEFT JOIN `es_product` as pr ON pr.`producer_id` = p.id
LEFT JOIN `es_tagging` as tt ON tt.`resource_id` = pr.id
LEFT JOIN es_tag as t ON t.id = tt.`tag_id`
WHERE ISNULL(p.`deleted_at`)
GROUP BY p.id';
$query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
return $query->getArrayResult();
並獲得帶有附加“標簽”字段的生產者字段數組,作為固定字符串。
目前,我將所有字段都映射為標量結果。 這意味着我只會得到一個數組,而沒有對象的所有功能。
您可以使用自定義Hydrator來完成此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.