Doctrine 中 `FindOneBy` 和 `Find` 的区别

问题描述 投票:0回答:1

使用 Doctrine 可以通过 ID 进行查找,就像您想获得有关用户的所有信息一样。

你可以这样做: $em->getRepository(User::class)->findOneBy(array('id' => 1));

或者你可以这样做: $em->getRepository(User::class)->find(1);

两者给出相同的结果,但对于 FindOneBy 您可以定义一个数组。

如果只想通过ID进行搜索怎么办?为什么它更好(可能是性能)?

sql symfony doctrine
1个回答
1
投票

使用 findOneBy 你可以:

->findOneBy(['id' => 1, 'enabled' => true], ['createdAt' => 'DESC']);

否则,find 是无需数据库查询的首选工作方式。

例如:

$swag = new Swag();
$swag->setSwagLevel(42);
$this->em->persist($swag); // Now you entity inside persistent collection, not in db.

$swag = $this->em->find(Swag::class, $swag->getId()) // Return entity from persistent collection, not from db in that case. Dump this $this->em->getUnitOfWork()->getScheduledEntityInsertions()


$user->giveSwag($swag);

$this->em->flush(); // Store all chain of changes to db.
© www.soinside.com 2019 - 2024. All rights reserved.