在findBy之后,Doctrine用急切的读取值重写关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在findBy之后,Doctrine用急切的读取值重写关系相关的知识,希望对你有一定的参考价值。
我有一个简单的实体
/**
* @ORMEntity(repositoryClass="...RepositoryUserTestRepository")
* @ORMTable(name="users", uniqueConstraints={
* @ORMUniqueConstraint(name="U_email", columns={"email"})
* })
* @UniqueEntity("email", message="Email is already used!")
*/
class UserTest
{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
* @ORMColumn(type="string", length=180)
* @AssertNotBlank()
* @AssertEmail()
*/
protected $email;
/**
* @var string
* @ORMColumn(type="string", length=255, nullable=true)
* @AssertNotBlank()
*/
protected $jobTitle;
/**
* @var Company
* @ORMManyToOne(targetEntity="...EntityCompany", fetch="EAGER")
* @ORMJoinColumn(name="company_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
private $company;
public function getId()
{
return $this->id;
}
public function getEmail()
{
return $this->email;
}
public function setEmail($email)
{
$this->email = $email;
return $this;
}
public function getJobTitle()
{
return $this->jobTitle;
}
public function setJobTitle($jobTitle)
{
$this->jobTitle = $jobTitle;
return $this;
}
public function setCompany(...EntityCompany $company = null)
{
$this->company = $company;
return $this;
}
public function getCompany()
{
return $this->company;
}
}
和控制器
$repo = $this->getDoctrine()->getRepository('..EntityUserTest');
$user = $repo->find(519);
dump($user);
$user->setJobTitle('new value');
$user->setCompany(null);
dump($user);
$repo->findBy(['email' => 'test@test.com']);
dump($user);
1-dump,原创
第二次转储,更改后没有刷新
在findBy,jobTitle之后的第三次转储 - 使用新值,公司 - 原始值,更改丢失了
这是正常的学说行为还是一个错误?我使用doctrine / orm v2.5.11。它是在新版本中修复的吗?
任何帮助,请
答案
通过存储库的findBy()查找未刷新的实体时,这是Doctrine的正常行为。请参阅https://github.com/doctrine/orm/issues/5092以获取更多信息。
以上是关于在findBy之后,Doctrine用急切的读取值重写关系的主要内容,如果未能解决你的问题,请参考以下文章
Doctrine 的 findBy*() 中的 LIKE 和 % 通配符