Tag: 主义

生成唯一的id – doctrine – symfony2

我想为我的门票生成唯一的门票ID。 但是如何让教条生成一个唯一的ID? /** * @ORM\Column(name="id", type="integer") * @ORM\Id() * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; 多一点解释: ID必须是6个章程:678915 ID必须是唯一的

PHPUnit模拟对象和静态方法

我正在寻找最好的方法去testing下面的静态方法(特别是使用Doctrine模型): class Model_User extends Doctrine_Record { public static function create($userData) { $newUser = new self(); $newUser->fromArray($userData); $newUser->save(); } } 理想情况下,我会使用一个模拟对象来确保“fromArray”(使用提供的用户数据)和“save”被调用,但这是不可能的,因为方法是静态的。 有什么build议么?

如何从symfony2中删除一个实体

我的第一个symfony2项目是一个存储在数据库中的访客列表(被邀请参加一个活动)。 我有 创build实体类来宾与他们的所有variables(ID,姓名,地址,电话号码等) 在mysql数据库中创build了模式 创build了一个“添加客人”到树枝模板的路线 创build了一个formType 最后在Controller中创build一个“createGuest”方法,一切正常。 我无法设法从数据库中删除一个客人。 我已经阅读了networking上的每一个教程,包括官方的Symfony2书籍; 所有它说的是: 删除一个对象 删除对象非常相似,但需要调用实体pipe理器的remove()方法: $em->remove($product); $em->flush(); 它甚至没有提到如何连接控制器deleteAction($ id)和树枝模板(甚至“Update a object”部分丢失了文档)。 我想要做的是使用viewGuests操作和viewGuests树枝模板列出所有访客,在每行旁边都有一个删除图标,您应该单击删除图标以删除条目。 简单,但我找不到任何文件,不知道从哪里开始。 public function deleteGuestAction($id) { $em = $this->getDoctrine()->getEntityManager(); $guest = $em->getRepository('GuestBundle:Guest')->find($id); if (!$guest) { throw $this->createNotFoundException('No guest found for id '.$id); } $em->remove($guest); $em->flush(); return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig')); }

学说 – 通过这种关系find了一个新的实体

自2周以来,我们在尝试刷新新元素时遇到了这个问题: CRITICAL:Doctrine \ ORM \ ORMInvalidArgumentException: 通过关系“Comment#capture”发现了一个新的实体,该关系没有被configuration为级联实体的持久化操作 但是capture已经在数据库中了,我们正在通过findOneBy来获取它,所以如果我们逐级保存它,或者坚持它,我们得到一个 表约束违规:重复条目。 注释是在不同的捕获循环中创build的,新的和所有必填字段都被设置。 在所有的实体被findOne (以及所有有效的)持久化和/或获取的情况下,刷新仍然失败。 我一直在这个问题上,所以请帮助我

cascade = {“remove”} VS orphanRemoval = true VS ondelete =“CASCADE

我试图收集一些关于以下方法的信息,以便在父实体被删除时自动删除子实体。 似乎最常用的方法是使用这三个注释: cascade = {“remove”}或orphanRemoval = true或ondelete =“CASCADE” 。 关于第三个问题,我有点困惑: ondelete =“CASCADE” ,正如关于这个主题官方文档的解释非常稀缺),如果有人能够证实我从我的研究中收集和理解的以下信息 ,networking和经验… 它能做什么 级联= { “去除”} ==>当拥有边实体时,反面的实体被删除。 即使你和其他拥有一方的实体在许多方面。 – 应该用于收集(所以在OneToMany或ManyToMany关系) – 在ORM中实现 orphanRemoval =真 ==>反面的实体被删除当拥有边实体是和它不再连接到任何其他拥有的一方实体。 (参考doctrine official_doc – 在ORM中的实现 – 可以与OneToOne,OnetoMany或ManyToMany一起使用 onDelete = “CASCADE” ==>这会将On Delete Cascade添加到数据库中的外键列 – 这个策略有点棘手,但可以非常强大和快速。 (参考doctrine official_doc …但没有读更多的解释) – ORM不得不做更less的工作(与之前的两个做法相比),因此应该有更好的performance。 其他信息 – 所有这三种方式都是在双向关系实体( right ??? )上实现的 – 使用cascade = […]

Doctrine 2在manyToOne关系中不能使用nullable = false?

User有一个关联的Package 。 许多用户可以参考相同的包。 没有定义Package User不能存在。 User应该拥有这个关系。 关系是双向的,所以Package中有零个或更多的用户。 这些要求在Doctrine 2中导致了ManyToOne关系和Package OneToMany关系。但是user表(即外键)中的package_id允许null值。 我试过设置nullable=false但命令: php app/console doctrine:generate:entities DL –path="src" –no-backup 说关系ManyToOne没有nullable为nullable的属性。 我错过了什么? class User { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\ManyToOne(targetEntity="Package", inversedBy="users") */ private $package; } class Package { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * […]