【发布时间】:2015-08-13 15:40:47
【问题描述】:
我有这个实体:
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,给定 null,调用 /var/www/html/backend/vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php 在第 410 行并定义
我将属性设置为nullable,但我无法从数据中删除对象,为什么?如何解决这个问题?
【问题讨论】:
-
这听起来像是缓存的问题。错误在于您说您修改的方法。如果您正在使用 Zend OPCache 之类的东西,请尝试重新启动/禁用它。似乎使用了旧的类定义。注意:您也可以使用
setCompany(Company $company=null)来保持类型安全并允许空值。 -
@Anonymous 有效,我刚刚重新启动了我的网络服务器并清除了缓存(我之前被清除了),一切都很好,谢谢,顺便说一句,我怎么知道我是否正在使用任何类型的缓存?
-
我会写一个完整的答案是一分钟。
标签: php symfony doctrine-orm symfony-2.7