当前位置: 首页 > 知识库问答 >
问题:

在Symfony2中创建只读实体的集合

子车新立
2023-03-14

我的问题是关于创建实体集合的。我知道“如何嵌入收集表单”,并成功地使用了它。但在这种情况下,我有:

简单类

class Thing
{
  /**              
  * @ORM\ManyToMany(targetEntity="DicStyle", mappedBy="things")
  * ....
  */
  protected $styles;   

  public function __construct()
  {
     $this->styles = new ArrayCollection();
  } 
}

文体词典

class DicStyle 
{
    ..... 
}

我不需要为DicStyle对象创建表单,因为这是只读对象=字典(不可更改)。所以,我想创建一个类似这样的表单:

$builder->add('styles', 'collection', array(
    'type'   => 'entity', 'options' => array(
        'class' => 'MyEntityBundle:DicStyle'
        )
 ))         

当然是伪代码。我无法想象如何实施它。

结果

假设我有:

  • 表“Thing”有一行(id=1)。

在表单中,我为这个东西选择了两个DicStyle(id=3,id=5)。因此,mtm_thing_风格包含:

thing_id     dicstyle_id
--------     ------------
    1            3
    1            5

共有2个答案

唐和洽
2023-03-14

要在表单中选择一个或多个对象以将其与结果关联,可以使用表单字段类型“实体”。(见表格类型)

$builder->add('styles', 'entity', array(
    'class' => 'MyEntityBundle:DicStyle',
    'property' => 'name', // property you want to be displayed
    'expanded' => true, 
    'multiple' => true
    )
);

这将呈现复选框,因此可以选择要引用的多个实体。

请记住,如果您使用多个=

  • 展开=

请参见表单实体类型选项

宫晟
2023-03-14

请尝试以下表单:

 $builder->add('styles', 'entity', array(
     'class' => 'MyEntityBundle:DicStyle'
     'property'=>'name' //what property do you want to see when you select,
     'multiple" => true //you'll be able to select many DicStyle
     'expanded' => false //it'll shown on a multiple choice select tag    
    )
);
 类似资料:
  • 考虑一个域,其中客户、公司、雇员等拥有一个ContactInfo属性,该属性又包含一组地址、电话、电子邮件等。 以下是我的缩写联系人信息: 一些注意事项(我不是100%确定这些是否是EF的“最佳实践”): 地址集合是虚拟的,以允许延迟加载 集合上的私有设置器禁止集合替换 集合是一个以确保每个联系人没有重复的地址 使用方法,我可以确保始终且最多有一个主地址.... 我希望(如果可能)阻止通过方法添加

  • 我试图实现的是一个创建/编辑用户工具。可编辑字段有: null null 注意:findAllRolesExceptOwnedByUser()是一个自定义的存储库函数,返回所有角色(那些尚未分配给$User的角色)的子集。 1.3.1添加角色: 1.3.2删除角色: 由于组和角色有相同的问题,我在这里跳过它们。如果我让角色发挥作用,我知道我也能在团队中做到这一点。 没有必要发布这些内容,因为它们工

  • 我是全新的MongoDB,所以很抱歉,如果这个问题是基本的。 我试图获得一个使用Java basic对象(POJO)的基本CRUD,但这段代码失败了。(正确的方法是什么?我认为可能接近这个): 这是我得到的信息:

  • 问题内容: 使用JPA将实体设为只读的正确方法是什么?我希望我的数据库表永远不会以编程方式进行修改。 我想我知道我应该用锁定我的对象。从数据库检索后,是否可以使用注释使我的实体直接锁定?还是我必须弄乱并覆盖该特定实体的通用DAO? 问题答案: 一种解决方案是使用基于字段的注释,将字段声明为,并仅建议公共获取者。这样做,您的对象无法更改。 (此解决方案不是特定于实体的,它只是构建不可变对象的一种方法

  • 问题内容: 我的JPA / Hibernate应用程序中有几个映射的对象。在网络上,我收到的数据包代表这些对象的更新,或者实际上可能完全代表新的对象。 我想写一个像 如果数据库中存在一个带有pk primaryKey的对象,则该对象将返回所提供类的一个对象,否则将创建该类的新对象,并将其持久化并返回。 接下来,我将使用该对象来更新事务中的所有字段。 在JPA中是否有惯用的方法来执行此操作,还是有更

  • 本文向大家介绍在postgresql数据库中创建只读用户的操作,包括了在postgresql数据库中创建只读用户的操作的使用技巧和注意事项,需要的朋友参考一下 在pg数据库中创建只读用户可以采用如下方法。大体实现就是将特定schema的相关权限赋予只读用户。 补充:Postgresql创建只读用户,并开放部分表的权限 我们团队研发的巡检平台,协助用户进行常规作业两年之久,平台存储了大约300TB的