Symfony2可捕获的致命错误:传递给...的参数1必须是给定的...整数的实例,在

Agu*_*bat 5 set symfony

我在编码时遇到问题。当我向您发送表单并将其保存到数据库时,将显示如下消息:

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
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

  $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();
      }

    }
Run Code Online (Sandbox Code Playgroud)

我不知道与哪个问题有关。我的另一种编码方式很好用,但是当我无法在此编码中使用此方法时,我感到困惑。

Dar*_*ght 5

从您提供的示例中,我假设这是 line 601,它触发了致命错误:

$students->setFormClass($findclass->getId());
Run Code Online (Sandbox Code Playgroud)

我假设方法调用\ITTBundle\Entity\Student::setFormClass()需要一个类型为 的对象\ITTBundle\Entity\FormClass。您正在从数据库中返回一个实体,但随后您显式地传递了对象的 id - 它是一个整数 - 而不是FormClass对象本身。

尝试这个:

$students->setFormClass($findclass);
Run Code Online (Sandbox Code Playgroud)

我们只能确定您是否向我们展示了 的方法签名\ITTBundle\Entity\Student::setFormClass(),但这是我的半知识假设。鉴于方法调用本身为意外的参数类型引发错误,我假设方法参数是键入的,所以我猜它可能看起来像这样:

$students->setFormClass($findclass->getId());
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)