我收到错误
参数1传递给 [...] \ FrontendUserRepository :: findMasterByVkbur() 必须是[...] \ MyModel的一个实例, TYPO3 \ CMS \ Extbase \ Persistence \ Generic \ LazyLoadingProxy的实例 给出,在第123行的[...] \ MyController.php中调用
为什么参数仍然是“LazyLoadingProxy”而不是“MyModel”?
这是MyController.php中的第123行:
b
这是“vkbur”对象:
$frontendUsers = $this->frontendUserRepository->findMasterByVkbur($this->feuser->getVkbur());
之前“使用”对象,例如与...
/**
* @var \MyVendor\MyExt\Domain\Model\MyModel
* @lazy
*/
protected $vkbur = null;
...我在第123行没有收到此错误。
答案 0 :(得分:4)
这是一个话题,但被放弃了。
解决方案似乎就是您所评论的内容:
if ($this->feuser->getVkbur() instanceof \TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy) {
$vkbur = $this->feuser->getVkbur()->_loadRealInstance();
} else {
$vkbur = $this->feuser->getVkbur();
}
$frontendUsers = $this->frontendUserRepository->findMasterByVkbur(vkbur);
答案 1 :(得分:2)
最佳解决方案似乎是在getter方法中检查变量的类型:
/**
* @return \MyVendor\MyExt\Domain\Model\MyModel $vkbur
*/
public function getVkbur() {
if($this->vkbur instanceof \TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy) {
$this->vkbur->_loadRealInstance();
}
return $this->vkbur;
}
答案 2 :(得分:0)
在某些情况下,仍需要如上所述检查LazyLoadingProxy。但是不应该像这里解释的那样解决吗? https://wiki.typo3.org/Enhanced_Lazy_Loading