PhpStorm 中的 Doctrine 存储库提示

问题描述

这是一个由两部分组成的问题。

首先,我似乎无法找出如何使 PHPStorm 正确提示 Doctrine 存储库:

实体看起来像这样:

/**
 * @ORM\Entity(repositoryClass="UserRepository")
 * @Entity @Table(name="users")
 */
class User
{

存储库如下所示:

use Doctrine\ORM\EntityRepository;

class UserRepository extends EntityRepository
{
    public function getUser() {}
}

但是当像这样访问存储库方法时:

$userRepository = $em->getRepository(User::class);
$user = $userRepository->getU... // getUser() is not suggested

PHPStorm 不建议使用 getUser() 方法

我发现的唯一解决方法是:

/** @var UserRepository $userRepository */
$userRepository = $em->getRepository(User::class);

但是每次我需要一些存储库时都这样做似乎有点麻烦。

另外,问题的第二部分是我不能使用存储库作为类属性

private EntityManager $em;
    
private UserRepository $userRepository;
    
public function __construct(EntityManager $em) {
    $this->em = $em;
    $this->userRepository = $em->getRepository(User::class);
}

因为它说:

Incompatible types: Expected property of type '\MyProject\UserRepository','\Doctrine\Persistence\ObjectRepository|\MyProject\User|string' provided 

如何为这两种情况正确设置?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)