首页 > 解决方案 > 在 Doctrine ArrayCollection 中获取给定项目

问题描述

开发一个 API,在每个请求开始时,提供的 API 密钥用于获取与请求关联的 Account 对象。

$account = $em->getRepository(Entity\Account\Account::class)
              ->findOneBy(['mainKey'=>$request->getHeaderLine('X-API-Key')]);

此帐户实体包含一个用户ArrayCollection,其中每个用户实体都包含一个username给定帐户唯一的属性。

给定用户名,如何获取用户实体?我可以做类似以下的事情,但是,我觉得我应该做不同的事情。

$user = $em->getRepository(Entity\Account\User::class)
           ->findOneBy(['accountId'=>$account->getId(), 'username'=>'John.Doe']);

谢谢,

PS。我假设这findOneBy()是在幕后使用准备好的语句并且不受 SQL 注入的影响,对吧?

PSS。我只是假设一个 ArrayCollection 包含一组对象,但是查看一些文档,现在不确定。

标签: phpdoctrine

解决方案


如果AccountUser(我想它是一对一的)相关,那么Account应该$user定义属性。你可以访问它:

$user = $account->getUser();

在哪里getUser

public function getUser()
{
    return $this->user;
}

推荐阅读