Symfony2 - 在实体构造函数中设置默认值

2023-11-21

我可以设置一个简单的默认值,例如字符串或布尔值,但我找不到如何设置实体的默认值。

在我的 User.php 实体中:

/**
* @ORM\ManyToOne(targetEntity="Acme\DemoBundle\Entity\Foo")
*/
protected $foo;

在构造函数中,我需要为 $foo 设置默认值:

public function __construct()
{
    parent::__construct();

    $this->foo = 1; // set id to 1
}

需要一个 Foo 对象,它传递一个整数。

设置默认实体 ID 的正确方法是什么?


我认为你最好将其设置在PrePersist event.

In User.php:

use Doctrine\ORM\Mapping as ORM;

/**
* ..
* @ORM\HasLifecycleCallbacks
*/
class User 
{
         /**
         * @ORM\PrePersist()
         */
        public function setInitialFoo()
        {
             //Setting initial $foo value   
        }

}

但设置关系值并不是通过设置整数来进行的id,而是通过添加一个实例来执行Foo。这可以在事件侦听器内完成,比实体的更好LifecycleCallback事件(因为你必须打电话Foo实体的存储库)。

首先,在您的捆绑包中注册事件services.yml file:

services:
    user.listener:
        class: Tsk\TestBundle\EventListener\FooSetter
        tags:
            - { name: doctrine.event_listener, event: prePersist }

And the FooSetter class:

namespace Tsk\TestBundle\EventListener\FooSetter;

use Doctrine\ORM\Event\LifecycleEventArgs;
use Tsk\TestBundle\Entity\User;

class FooSetter
{
    public function prePersist(LifecycleEventArgs $args)
    {
        $entity = $args->getEntity();
        $entityManager = $args->getEntityManager();

        if ($entity instanceof User) {
            $foo = $entityManager->getRepository("TskTestBundle:Foo")->find(1);
            $entity->addFoo($foo);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2 - 在实体构造函数中设置默认值 的相关文章

随机推荐

  • 为什么 Input onChange 的行为类似于 ReactJs 中的 onKeyDown?

    在下面的示例中 onChange每次用户输入字母时都会触发事件 例如onkeydown事件 这是正常行为吗 import React from react export default class Form extends React Co
  • 未找到 Conda 命令

    我已经安装了迷你康达并添加了环境变量export PATH home username miniconda3 bin PATH to my bashrc and bash 配置文件 但仍然无法在我的终端中运行任何 Conda 命令 我的设置
  • 使用冒泡排序对 int 数组进行排序

    为什么我打印出来的数组没有在下面的代码中排序 public class BubbleSort public void sortArray int x go through the array and sort from smallest t
  • 如何使用 C# 构建软件电话(使用 SIP 协议)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我面临的挑战是使用 C 或 net 技术构建 sip 软电话 请指导我构建此类所需的技术 要求和规范 可能的要求 支持的编解码器 G 722 1 G 723 1 G 726 G
  • TF10175:团队项目不存在

    我使用 Visualstudio Online 作为存储库 我从项目集合中删除了 ProjectName 项目 之后我只在一台计算机上出现错误 TF10175 ProjectName 团队项目不存在 有解决这个问题的想法吗 我通过删除我的工
  • Unity应用程序块,如何将参数传递给注入工厂?

    这是我现在拥有的 Container RegisterType
  • 何时在 C++ 中使用 void*

    我正在努力思考一个问题void 我应该了解什么是正确的使用方式以及是否存在任何潜在的滥用行为 意思是很酷的东西 没有错 我不明白如何以及为什么使用void 如果我理解的话 我需要将当前指针转换为void 然后当我想使用它时又投射回原来的 为
  • 在大文件中查找和替换

    我想在一个大的 xml 文件中找到一段文本 并想用其他文本替换 文件大小约为 50GB 我想在命令行中执行此操作 我正在查看 PowerShell 想知道它是否可以处理大尺寸 目前我正在尝试这样的事情 但它不喜欢它 Get Content
  • Libgdx |场景2d |设置表格的背景颜色?

    我正在创建一个菜单 就像 flappybird 中的菜单一样 当你死时它会在播放屏幕上弹出 我创建了一个扩展表格的类 我想将表格的背景设置为白色 有没有办法做到这一点 你可以这样做 Pixmap bgPixmap new Pixmap 1
  • 如何使用javascript删除CSS属性?

    是否可以使用 JavaScript 删除元素的 CSS 属性 例如我有div style zoom 1 2 现在我想通过 JavaScript 删除缩放属性 您有两个选择 选项1 您可以使用移除属性方法 它将从元素中删除样式 el styl
  • Haskell:获取表达式的静态类型

    我正在寻找一个可以完成 GHCi type 命令的功能的函数 理想情况下 它会有一个类似的签名 getStaticType a gt String a getStaticType 1 2 a Num t gt t b getStaticTy
  • 子句之间的多个 MySql WHERE

    MySql 新手程序员感谢您的耐心等待 我试图跟踪满足 3 个不同条件的表中的 ID 号 这就是我所得到的 但是查询不会返回表中明确匹配的任何结果 想法 SELECT FROM table WHERE x BETWEEN 80 AND 20
  • 仅底角或顶角为圆角的 ImageView

    我对这个问题有答案 但我花了太多时间寻找它 这就是我创建这个问题的原因 这样对其他人来说会更容易 您不能像通常的视图一样使用形状 drawable 来圆化图像角 这就是为什么您需要对代码内的图像进行一些更改 这是使用材料设计来做到这一点的另
  • 使用 nbconvert 从 Jupyter Notebook 中删除单元格

    中提到的建议如何在 IPython Notebook 中隐藏一个特定单元格 输入或输出 不工作 在 Windows 上我执行以下操作 jupyter nbconvert a ipynb TagRemovePreprocessor remov
  • Android VideoView - 如何按顺序播放视频

    我正在尝试开发一款 Android 应用程序 可以在一个视频视图中播放多个视频 当一个完成后 第二个必须开始 依此类推 我的视频存储在项目的 raw 文件夹中 为了获取他们的文件名 我这样做 Field fields R raw class
  • 当 VS 解决方案中的目标失败时,如何使 msbuild 失败?

    我在命令行上使用 msbuild 来构建包含 C 项目的 VS2012 解决方案 该项目有一个在构建后运行的目标
  • 如何使用终端调用jar文件中的方法?

    我在 jar 文件中有一个已编译的项目 我需要从中调用一个方法 如何在 ubuntu 终端中执行此操作 您不能从任何类的终端或 cmd 调用任何方法 您可以通过终端执行课程 If your jar是可执行的尝试 java jar Name
  • Android ContentProvider读写权限

    权限似乎没有任何区别 在清单中 我只有一个
  • Field...Room 持久性库的 getter 不明确

    我有以下实体 public class User PrimaryKey private final long id private String id private String userName private String email
  • Symfony2 - 在实体构造函数中设置默认值

    我可以设置一个简单的默认值 例如字符串或布尔值 但我找不到如何设置实体的默认值 在我的 User php 实体中 ORM ManyToOne targetEntity Acme DemoBundle Entity Foo protected