簡體   English   中英

如何獲取額外數據以提供symfony2集合字段類型?

[英]How to fetch extra data to feed a symfony2 collection field type?

我正在使用Symfony2的基本收集字段,一切都運行良好。

說我有:

->add('product', 'collection', array(...))

現在,在我看來,我正在調用product.vars.data.owner ,我有一個oneToOne product->getOwner()

這會在集合中為每個產品生成一個額外請求。 由於我不能在集合字段中使用querybuilder,我如何確保它的學說取得產品所有者以避免那些額外的請求?

這是一個示例(我沒有看到您的數據映射和表單構建器),我希望這可以幫助您:

1:通過dql獲取數據,

$dql = "select c from category c left join c.product p join p.owner o where c.id = ?1";
$category = $this->createQuery($dql)->setParameter(1, $id)->getSingleResult();

2:假設您有一個可能包含許多產品的類別表單:

class Category
{
    // manyToMany
    private $product
}

$form = $this->createForm(new CategoryType(), $category);

3:如果您的集合類型是嵌入式ProductType(表單類型),那么您可以在模板中使用以下行:

{{ form.product.vars.data.owner }} 

如果你不能使用querybuilder,你可以強制Doctrine在EAGER加載產品加載產品時,始終在產品上加載所有者:

/**
 * @ORM\OneToOne(targetEntity="Application\Entity\Owner", fetch="EAGER")
 */
protected $owner;

http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html#by-eager-loading

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM