0

我有一个User具有一对多关系的实体,例如:

/**
 * @ORM\OneToMany(targetEntity="UserMarket", mappedBy="user")
 * @var Collection|UserMarket[]
 */
private Collection $userMarkets;

这个User对象由简单的 UserProvider 类返回,它确保User确实是我想要的类:

use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Security;
class UserProvider
{
    /**
     * @var Security
     */
    private Security $security;
    /**
     * @var EntityManagerInterface
     */
    private EntityManagerInterface $entityManager;

    public function __construct(Security $security, EntityManagerInterface $entityManager)
    {
        $this->security = $security;
        $this->entityManager = $entityManager;
    }


    public function getUser(): User
    {
        $repository = $this->entityManager->getRepository(User::class);
        $user = $this->security->getUser();
        if ($user instanceof User) {
            return $user;
        }

        /** @var User $dbUser */
        $dbUser = $repository->findOneBy(['username' => $user->getUsername()]);
        return $dbUser;
    }
}

当我在 Type 类中获取 User 时(需要将结果收紧到仅与用户相关的数据),尽管数据库中有与之相关的对象userMarkets,但集合始终为空。 对此感到好奇的是,在探查器的数据库选项卡中,我可以看到所有数据都已正确查询(不存在的 userMarket 的 id 用于获取更多相关对象)。 更奇怪的是,当我添加到注释时,集合被正确填充。我不明白为什么当 fetch 是懒惰的时候它不是,所以我猜想会有一些无法预料的后果。还有..我在尝试授权时遇到错误:UserMarket

fetch="EAGER"fetch="EAGER"

注意:serialize(): "" 作为成员变量从 __sleep() 返回但不存在

我不太清楚,代码的哪一部分在这里可能很重要。请指教,我做错了什么?

4

0 回答 0