Symfony 3 注意:class Doctrine\ORM\EntityManager 的对象无法转换为 int

Symfony 3 Notice: Object of class Doctrine\ORM\EntityManager could not be converted to int

我是 Symfony 3 的新手,我正在实现一个简单的 Web 应用程序。我正在尝试从 FORM 获取数据,但是当获取请求并将数据放入实体管理器实例时出现错误,让我用代码解释一下:

这是控制器(默认控制器)

namespace Database\TestBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Database\TestBundle\Entity\Products;

use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class DefaultController extends Controller
{
  public function addAction(Request $request)
  {
    $product = new Products();

    $form = $this->createFormBuilder($product)
                 ->add('name', TextType::class)
                 ->add('price', TextType::class)
                 ->add('description', TextareaType::class)
                 ->add('save', SubmitType::class, array('label' => 'Save Product'))
                 ->getForm();

    $form->handleRequest($request);

    if($form->isValid())
    {
        $product = $form->getData();

        $em = $this->getDoctrine()->getManager();
        $em->persist($product);
        $em-flush();  //I got the error in this line

        return $this->redirect($this->generateUrl('database_test_list'));
    }

    return $this->render('DatabaseTestBundle:Default:add.html.twig', array(
    'form' => $form->createView()));
 }
}

这是我的实体(产品)

namespace Database\TestBundle\Entity;

/**
* Products
*/
class Products
{
/**
 * @var int
 */
private $id;

/**
 * @var string
 */
private $name;

/**
 * @var int
 */
private $price;

/**
 * @var string
 */
private $description;

/**
 * Get id
 *
 * @return int
 */
public function getId()
{
    return $this->id;
}

/**
 * Set name
 *
 * @param string $name
 *
 * @return Products
 */
public function setName($name)
{
    $this->name= $name;

    return $this;
}

/**
 * Get name
 *
 * @return string
 */
public function getName()
{
    return $this->name;
}

/**
 * Set price
 *
 * @param integer $price
 *
 * @return Products
 */
public function setPrice($price)
{
    $this->price= $price;

    return $this;
}

/**
 * Get price
 *
 * @return int
 */
public function getPrice()
{
    return $this->price;
}

/**
 * Set description
 *
 * @param string $description
 *
 * @return Products
 */
public function setDescription($description)
{
    $this->description= $description;

    return $this;
}

/**
 * Get description
 *
 * @return string
 */
public function getDescription()
{
    return $this->description;
}
}

这是我的观点(添加)

{% extends '::frontend.html.twig' %}
{% block title %}List of Products{% endblock %}

{% block body %}
<h1 class="clase">Add Product</h1>
<hr>

<a href="{{asset('test/list')}}" class="btn btn-warning" title="Return to list">Return to list</a>

<br/>
<br/>

{{ form_start(form, {'attr': {'class': 'form-horizontal'}}) }}
<div class="row">
    <div class="col-sm-12">
        <div class="form-group">
            <label class="col-sm-1 control-label required" for="form_name">Name</label>
            <div class="col-sm-3">
                {{form_widget(form.name, {'attr': {'class': 'form-control col-md-12'}})}}
            </div>
        </div>

        <div class="form-group">
            <label class="col-sm-1 control-label required" for="form_price">Price</label>
            <div class="col-sm-3">
                {{form_widget(form.price, {'attr': {'class': 'form-control col-md-12'}})}}
            </div>
        </div>

        <div class="form-group">
            <label class="col-sm-1 control-label required" for="form_description">Description</label>
            <div class="col-sm-3">
                {{form_widget(form.description, {'attr': {'class': 'form-control col-md-12'}})}}
            </div>
        </div>

        <hr/>
        {{form_widget(form.save, {'attr': {'class': 'btn btn-default'}})}}
        </p>

    </div>
</div>
{{ form_end(form) }}

 {% endblock %}

这是错误消息:

Stack Trace

in src\Database\TestBundle\Controller\DefaultController.php at line 48  

46     $em = $this->container->get('doctrine')->getManager();
47     $em->persist($product);
48     $em-flush();
49     return $this->redirect($this->generateUrl('database_test_list'));

 at ErrorHandler ->handleError ('8', 'Object of class Doctrine\ORM\EntityManager could not be converted to int', 
'C:\xampp\htdocs\taller_symfony\src\Database\TestBundle\Controller\DefaultController.php', '48', array('request' => object(Request), 'producto' => object(Productos), 'form' => object(Form), 'em' => object(EntityManager)))
 in src\Database\TestBundle\Controller\DefaultController.php at line 48

有人知道这个错误吗??任何人都可以帮助我,非常感谢。

您有语法错误,缺少 > 符号。

你有:

$em-flush();

虽然应该是:

$em->flush();

PHP 没有抛出语法错误,因为它实际上是正确的 PHP 语法,但不是您所期望的语法。您试图对对象进行算术(减法)运算。