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服务器并清除了缓存(我以前被清除过),一切都很好,谢谢,顺便说一句,我如何知道我是否使用了任何类型的缓存?我将在一分钟内写出完整的答案。