gpt4 book ai didi

php - 你如何处理 Doctrine 2 中的实体关系?

转载 作者:可可西里 更新时间:2023-11-01 13:48:21 27 4
gpt4 key购买 nike

当你想插入一个实体时,你可以这样做:

$user = new User();
$user->setEmail('john@doe.com');

$em->persist($user);
$em->flush();

但是如果我想创建一篇可以有一个用户的文章怎么办?

目前,我需要做的:

$user = $em->getRepository('User')->find($id);
$article->setUser($user);

这是因为关系,Doctrine 2 要求一个 User 实体。

但是,我不能“模拟”用户对象,因为我不想手动设置 id,因此我不能:

$user = new User();
$user->setId(45);

我对这种行为有错吗,你怎么办?

加载 User 实体只是为了设置关系可能是性能问题,即使有缓存,这也不总是一个选项,尤其是对于更新。

最佳答案

如果您手边没有托管用户实体,您需要的是 reference proxy ,EM 很乐意为您提供:

<?php
$article = new Entity\Article();
$article->setTitle('Reference Proxies Rule');
$article->setBody('...');
$article->setUser($em->getReference('Entity\User',45));
$em->persist($article);
$em->flush();

关于php - 你如何处理 Doctrine 2 中的实体关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011382/

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