gpt4 book ai didi

mongodb - Symfony2 - 文档选择列表和 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 10:44:46 24 4
gpt4 key购买 nike

我在尝试制作包含集合的表单时遇到问题。我向您解释一下我目前的情况。

我创建了两个基本对象:ProductCategory。我还为它们创建了两种类型:ProductType、CategoryType

我有 3 个类别和 1 个产品,我已将前几个类别与产品相关联。因此,该产品有两个关联的类别。

我想创建产品的表单。在这种形式中,我只想在 html 选择控件中显示产品的类别,以便用户可以对这些数据进行 future 的操作。

我给你总结了重点。

  1. 我的产品类有

    class Product 
    {
    ...

    @EmbedMany(targetDocument="Acme\StoreBundle\Document\Category")
    protected $categories;

    ...

    }
  2. 在我的ProductType中我有:

    public function buildForm(FormBuilder $builder, array $options)
    {
    $builder->add('id')
    ->add('name')
    ->add('price')
    ->add('categories', 'document', array(
    'class' => 'Acme\StoreBundle\Document\Category',
    'choices' => $builder->getData()->getCategories()->toArray(),
    'multiple' => 'true',
    'property' => 'name'
    ))
    ;

    }

我已经尝试了所有方法,最准确的半解决方案是将 ProductTypecategories 属性创建为 记录并通过来自 Controller 的绑定(bind)数据选择选项。

关键是,对于此解决方案,选项控件的 idsUnitOfWork 类 中设置的 spl_object_hash,而不是原始类别对象ids

我之前的尝试:

  1. 当我在没有先前选择的情况下使用文档时,我没有问题,但我只想要 Product 拥有的类别。

  2. 当我使用collection 显示类别列表(关联CategoryType)时我没有遇到问题,但我不知道如何将其显示为选择控件。

  3. 我不能在 Category 类 上使用 query_builder 因为我不能只查询具有产品 ID X 的对象,因为 Category object 没有任何Product reference(没错)。

有没有人有这个问题的解决方案或其他想法来解决这个问题?

非常感谢,瑞奇。

最佳答案

你说

I want to create the Product's Form. In this form I want to show only the categories the product has, in a html select control, so the user can make future operations with these data.

然后您继续并获取所有类别。

为什么不保持简单并从产品对象中获取引用类别?

$cats = $product->getCategories();     
if(!is_null($cats) && $cats->count() > 0) {
$choices = $cats;
} else {
// grab all so you can have the use set them
$choices = $builder->getData()->getCategories()->toArray()
}

关于mongodb - Symfony2 - 文档选择列表和 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8551091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com