我有一堆存储库,我经常使用像
findOneBySomeField
,findByAnotherField
这样的方法。这些方法不存在于存储库类中,但 Doctrine 可以正确使用它。
问题在于:由于存储库类中不存在这些方法,因此没有参数和返回类型的类型提示。
我尝试添加一些 PHPSTORM_META,如下所示:
namespace PHPSTORM_META {
override(
App\Repository\MyEntityRepository::findOneByCode(0), map([
'' => 'App\Entity\MyEntity'
])
);
}
但这行不通。而且,即使我可以让它工作,我也需要手动添加
findBy...
和 findOneBy...
所有可能的方法。但我在某些实体中有多个字段(在某些实体中超过 50 个),所以我需要太多 override
指令。而且我仍然没有看到任何方法为参数添加类型提示。理论上是可能的,因为如果我的实体中有 string $code
,我应该有 findOneByCode(string $code)
(参数类型必须与实体字段类型相同)等等。
有没有简单的方法可以做到这一点?
您可以使用 PHPStan 的 Doctrine 扩展