我在编码时遇到问题。当我向您发送表单并将其保存到数据库时,将显示以下消息:
Catchable fatal error: Argument 1 passed to ITTBundle\Entity\Student::setFormClass() must be an instance of ITTBundle\Entity\FormClass, integer given, called in C:\Users\Rivan\Documents\DigitalSchoolBase\Symfony2\src\ITTBundle\Controller\ConfigureController.php on line 601 and defined in C:\Users\Rivan\Documents\DigitalSchoolBase\Symfony2\src\ITTBundle\Entity\Student.php on line 901
这是我的代码:
$findclass = $this->getDoctrine()
->getRepository('ITTBundle:FormClass')
->findOneBy(array('class_level' => $classlevel->getId(), 'letter' => $letter, 'class_major' => $classmajor->getId()));
//print_r($findclass->getId()); exit;
if( empty($error_message) )
{
If ($findclass)
{
$em = $this->getDoctrine()->getManager();
$students->setFormClass($findclass->getId());
$em->persist($students);
$em->flush();
}
}
我不知道与哪个问题有关。我的另一种编码方式很好用,但是当我无法在此编码中使用此方法时,我感到困惑。
最佳答案
从您提供的示例中,我假设这是601
行,它触发了致命错误:
$students->setFormClass($findclass->getId());
我假设方法调用
\ITTBundle\Entity\Student::setFormClass()
需要一个\ITTBundle\Entity\FormClass
类型的对象。您正在从数据库中返回一个实体,但随后您又显式地传递了对象的ID(它是整数),而不是FormClass
对象本身。试试这个:
$students->setFormClass($findclass);
我们只能确定您是否向我们展示了
\ITTBundle\Entity\Student::setFormClass()
的方法签名,但这是我的半基础假设。鉴于方法调用本身为意外的参数类型引发错误,我假设输入了方法参数,所以我猜可能是这样的:public function setFormClass(\ITTBundle\Entity\FormClass $formClass)
{
$this->formClass = $formClass;
}
希望这可以帮助 :)