Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 允许多个反向实体中的空值_Php_Symfony_Doctrine Orm_Symfony 2.7 - Fatal编程技术网

Php 允许多个反向实体中的空值

Php 允许多个反向实体中的空值,php,symfony,doctrine-orm,symfony-2.7,Php,Symfony,Doctrine Orm,Symfony 2.7,我有这个实体: class Brand { ... /** * @var Company * @ORM\ManyToOne(targetEntity="Company", inversedBy="brands") * @ORM\JoinColumn(name="companies_id", referencedColumnName="id", nullable=true) */ protected $company; .

我有这个实体:

class Brand
{
    ...

    /**
     * @var Company
     * @ORM\ManyToOne(targetEntity="Company", inversedBy="brands")
     * @ORM\JoinColumn(name="companies_id", referencedColumnName="id", nullable=true)
     */
    protected $company;

    ...

    /**
     * Set company.
     *
     * @param Company $company
     *
     * @return Brands
     */
    public function setCompany(Company $company)
    {
        $this->company = $company;
        return $this;
    }
}
如果我从方法签名中删除
Company
类型提示,则会出现以下错误:

可捕获致命错误:参数1传递给 AppBundle\Entity\Brand::setCompany()必须是的实例 AppBundleEntity\Company,给定为空,在中调用 /var/www/html/backend/vendor/symfony/symfony/src/symfony/Component/PropertyAccess/PropertyAccessor.php 第410行,并定义


我将属性设置为
nullable
,但无法从数据中删除对象,为什么?如何解决这个问题?

这听起来像是缓存的问题。错误在您所说的已修改的方法上。如果您正在使用Zend OPCache之类的东西,请尝试重新启动/禁用它。似乎使用了旧的类定义

注意:您也可以执行
setCompany(Company$Company=null)
以保护类型安全并允许空值


检查已启用内容的最简单方法是检查
phpinfo()
输出。如果您使用的是OPCache,您将在其中看到它。下面是我的开发环境的配置(在
php.ini
):

最后一个选项很重要,它会重新读取任何已更新的文件。在生产中,您可能希望将其设置为零(并将opcache.revalidate\u freq设置为零),以减少磁盘访问


虽然像APC这样的东西仍然可以工作,但是内置的Zend OPCache是PHP5.5+上的一种方式,所以如果可以的话,我建议切换。

这听起来像是缓存的问题。错误在您所说的已修改的方法上。如果您正在使用Zend OPCache之类的东西,请尝试重新启动/禁用它。似乎使用了旧的类定义

注意:您也可以执行
setCompany(Company$Company=null)
以保护类型安全并允许空值


检查已启用内容的最简单方法是检查
phpinfo()
输出。如果您使用的是OPCache,您将在其中看到它。下面是我的开发环境的配置(在
php.ini
):

最后一个选项很重要,它会重新读取任何已更新的文件。在生产中,您可能希望将其设置为零(并将opcache.revalidate\u freq设置为零),以减少磁盘访问


虽然像APC这样的东西仍然可以工作,但是内置的Zend OPCache是PHP5.5+上的一种方式,所以如果可以的话,我建议您进行切换。

只需修改setCompany方法,如下所示

public function setCompany(Company $company=null)
{
    $this->company = $company;
    return $this;
}

只需修改setCompany方法,如下所示

public function setCompany(Company $company=null)
{
    $this->company = $company;
    return $this;
}

这听起来像是缓存的问题。错误在您所说的已修改的方法上。如果您正在使用Zend OPCache之类的东西,请尝试重新启动/禁用它。似乎使用了旧的类定义。注意:您也可以执行
setCompany(Company$Company=null)
以保持类型安全并允许空值。@Anonymous这样做,我刚刚重新启动了我的web服务器并清除了缓存(我以前被清除过),一切都很好,谢谢,顺便说一句,我如何知道我是否在使用任何类型的缓存?我会在一分钟内写出完整的答案。这听起来像是缓存的问题。错误在您所说的已修改的方法上。如果您正在使用Zend OPCache之类的东西,请尝试重新启动/禁用它。似乎使用了旧的类定义。注意:您也可以执行
setCompany(Company$Company=null)
以保持类型安全并允许空值。@Anonymous这样做有效,我刚刚重新启动了web服务器并清除了缓存(我以前被清除过),一切都很好,谢谢,顺便说一句,我如何知道我是否使用了任何类型的缓存?我将在一分钟内写出完整的答案。