php 原则反射异常属性不存在

vq8itlhq  于 2022-12-21  发布在  PHP
关注(0)|答案(7)|浏览(224)

我尝试在现有数据库上添加Doctrine。我让Doctrine生成带注解的实体并从那里进行调整。当我尝试加载下面的实体时,我收到错误PHP Fatal error: Uncaught exception 'ReflectionException' with message 'Property Users\\User::$resellerID does not exist'

class User
{
    /* ... */

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToOne(targetEntity="\Resellers\Reseller")
     * @ORM\JoinTable(name="reseller",
     *   joinColumns={
     *     @ORM\JoinColumn(name="resellerID", referencedColumnName="resellerID")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="resellerID", referencedColumnName="resellerID")
     *   }
     * )
     */
    private $reseller;

    /* ... */
}

userreseller表都有resellerID列,我的理解是,对于连接ID列,您不需要将ID列作为属性添加到实体类中,那么是什么导致了ReflectionException呢?

mklgxw1f

mklgxw1f1#

因为我已经将自动生成的属性从resellerID重命名为reseller(在尝试使用它之后),所以我需要清除Doctrine缓存。

php vendor/bin/doctrine.php orm:clear-cache:result
php vendor/bin/doctrine.php orm:clear-cache:query
php vendor/bin/doctrine.php orm:clear-cache:metadata

或者,如果您使用Symfony with Doctrine:

php bin/console doctrine:cache:clear-result
php bin/console doctrine:cache:clear-query
php bin/console doctrine:cache:clear-metadata
2w3kk1z5

2w3kk1z52#

对我来说,clearing the PHP APC cache就是解决方案

<?php
apc_clear_cache();
wvyml7n5

wvyml7n53#

不管怎样,它帮了我

php artisan  doctrine:clear:metadata:cache
iecba09b

iecba09b4#

通常在生产中,您需要这样的内容:

php bin/console doctrine:cache:clear-result --env=prod
php bin/console doctrine:cache:clear-query --env=prod
php bin/console doctrine:cache:clear-metadata --env=prod
kdfy810k

kdfy810k5#

我的错误仍然发生在我试图清除原则缓存时。
对我有效的方法是通过删除/storage/framework/cache/*下的文件夹来手动清除该高速缓存

cyvaqqii

cyvaqqii6#

在Symfony中,由于Docker容器权限,我不得不手动删除/var/cache/下的所有内容。

eivnm1vs

eivnm1vs7#

如果有人在使用Docker容器时阅读此信息:
1.在PHP/Symfony容器中使用终端。
1.输入旧答案中引用的条令缓存清除命令:

php bin/console doctrine:cache:clear-result
    php bin/console doctrine:cache:clear-query
    php bin/console doctrine:cache:clear-metadata
  1. APC缓存清除是否也在以前的答案中提到:
php -r "apc_clear_cache();"

1.在Docker中重新启动PHP / Symfony容器。
重新启动作为最后一步最终清除了任何挥之不去的东西,至少在我的情况下是这样。希望这对其他使用Docker的人有帮助。

相关问题