2015-09-07 4 views
0

У меня есть ошибка: Catchable Фатальная ошибка: Объект класса ParcAutoBundle \ Entity \ Автомобиль не может быть преобразован в строкуSymfony2 Doctrine2 GetResult прут

мой класс обслуживания является:

<?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 
    )); 
} 

ответ

1

проблема решена, я гнал на __toString() в автомобиль класса

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

В вас ParcAutoBundle:ParcAuto:car_addmaintenance.html.twig шаблон, попытайтесь отобразить свойство автомобиля, а не автомобиль непосредственно:

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

поблагодарить вас за ваш ответ :) –

+0

Добро пожаловать. Но я думаю, что вы не должны использовать '__toString()' в своем классе, но '{{car.registrationnumber}}' в вашем шаблоне, поскольку у вас уже есть getter для этого свойства :) –