Symfony2 Doctrine2 getresult 树枝

Symfony2 Doctrine2 getresult twig

我有一个错误: 可捕获的致命错误:class ParcAutoBundle\Entity\Car 的对象无法转换为字符串

我的 class 维护是:

<?php

namespace AutoEcole\ParcAutoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;


/**
 * Maintenance
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="AutoEcole\ParcAutoBundle\Entity\MaintenanceRepository")
 */

class Maintenance {

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="datemaintenance", type="string", length=255)
 */
private $datemaintenance;

/**
 * @var integer
 *
 * @ORM\Column(name="mileage", type="bigint")
 */
private $mileage;

/**
 * @var string
 *
 * @ORM\Column(name="description", type="text")
 */
private $description;

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

/**
 * Set datemaintenance
 *
 * @param string $datemaintenance
 * @return Maintenance
 */
public function setDatemaintenance($datemaintenance) {
    $this->datemaintenance = $datemaintenance;

    return $this;
}

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

/**
 * Set mileage
 *
 * @param integer $mileage
 * @return Maintenance
 */
public function setMileage($mileage) {
    $this->mileage = $mileage;

    return $this;
}

/**
 * Get mileage
 *
 * @return integer 
 */
public function getMileage() {
    return $this->mileage;
}

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

    return $this;
}

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

/**
 * @ORM\ManyToOne(targetEntity="\AutoEcole\ParcAutoBundle\Entity\Car")
 * @ORM\JoinColumn(nullable=false)
 */
private $car;

/**
 * Set car
 *
 * @param \AutoEcole\ParcAutoBundle\Entity\Car $car
 * @return Maintenance
 */
public function setCar(\AutoEcole\ParcAutoBundle\Entity\Car $car = null) {
    $this->car = $car;

    return $this;
}

/**
 * Get car
 *
 * @return \AutoEcole\ParcAutoBundle\Entity\Car 
 */
public function getCar() {
    return $this->car;
}

}

我在控制器中的功能是:

如果你想要 MaintenanceType 告诉我

 public function addcarmaintenanceAction($id, Request $request) {

    //User connecté
    $user = $this->getUser();

    $maintenance = new Maintenance();

    $car = $this->getDoctrine()->getManager()->getRepository('ParcAutoBundle:Car')->find($id);

    //dump($car);
    //die();
    //Création du formulaire
    $form = $this->createForm(new MaintenanceType());

    $form->handleRequest($request);

    if ($form->isValid()) {

        //Récupération des données du formulaire de l'ajout du voiture
        $datemaintenance = $form['datemaintenance']->getData();
        $mileage = $form['mileage']->getData();
        $description = $form['description']->getData();

        //Préparation de l'objet pour le persister et faire flush() ensuite
        $maintenance->setDatemaintenance($datemaintenance);
        $maintenance->setMileage($mileage);
        $maintenance->setDescription($description);
        $maintenance->setCar($id);

        //Entity Manager
        $em = $this->getDoctrine()->getManager();
        $em->persist($maintenance);
        $em->flush();
        $message = "style=display:block;";

        return $this->render('ParcAutoBundle:ParcAuto:car_addmaintenance.html.twig', array(
                    'form' => $form->createView(),
                    'user' => $user,
                    'message' => $message,
                    'car' => $car
        ));
    }
    $message = "style=display:none;";
    return $this->render('ParcAutoBundle:ParcAuto:car_addmaintenance.html.twig', array(
                'user' => $user,
                'form' => $form->createView(),
                'message' => $message,
                'car' => $car
    ));
}

在你的ParcAutoBundle:ParcAuto:car_addmaintenance.html.twig模板中,尝试显示一辆属性的汽车,而不是直接显示汽车:

{{ car.model }} // it's an exemple property
// instead of
{{ car }}

问题解决了,我把 __toString() 放在 Car Class

public function __toString() {
    return (string) $this->getRegistrationnumber();
}