Ein Objekt der Klasse Doctrine\ORM\PersistentCollection konnte nicht in eine Zeichenfolge konvertiert werden

Machte ich eine web-Anwendung mit Symfony2, in denen ein Benutzer hat ein array-Korrelation ManytoMany mit der entity-Mission. Der Benutzer kann laden Sie die Entität, $Produkt durch eine form, und einer der die Daten übergeben, die von der form ist die mission, die dem Benutzer zugeordnet.

Wenn ich versuche die Daten hochzuladen, erscheint die Fehlermeldung:

ContextErrorException: Catchable Fatal Error: Object of class   
Doctrine\ORM\PersistentCollection could not be converted to string in     
C:\BitNami\wampstack-5.4.23- 
0\frameworks\symfony\vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php line 103

Es ist klar, dass die Doktrin nicht wissen, wie um den Wert zu speichern in der mission.

Wie Schaffe ich es?

Ich nicht wusste weder, wie zu erklären, dass die mission Objekt in meiner product-Entität. Jetzt ist einfach so:

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

UPDATE ---

Mein controller ist jetzt:

       $form = $this->createFormBuilder($product)
           ->add('name', 'text')
           ->add('mission', 'entity', array('required' => true, 'multiple' => false, 'class' => 'AcmeManagementBundle:Mission', 'query_builder' => function($repository) { return $repository->createQueryBuilder('c')->orderBy('c.id', 'ASC'); },))              
      //...
           ->add('save', 'submit')
           ->getForm(); 

UPDATE ---

Funktioniert jetzt, aber ich habe ein problem. Wann erscheint das Formular zum hochladen der $product-Objekt, erscheint auch die ->add('mission', 'Einheit'... In diesem Bereich kann ich sehen, alle mission gespeichert, und nicht nur diejenigen, die dem Benutzer zugeordnet. Wie sollte ich mein controller?
Ich versuchte mein controller so:

       $product = new Product();
       $product->setMission($this->getUser()->getMission());
legen Sie public function __toString() { return $this->mission; } in Ihrer Entity-Klasse,
Sorry, ich bin wirklich neu von Symfony und php. Muss ich es zu meinem hinzufügen product.php Entität?
Ja, in Ihrem Product.php Entität 🙂
Aber das problem besteht weiterhin 🙁 In meinem controller ich die mission in der product-Entität mit $product->setMission($this->getUser()->getMission()); Sollte ich das ändern? Ich versuchte in gewisser Weise, aber ich schaffte es nicht!
Aber Sie haben die Verwendung von foreach in Ihrem controller, wo Sie setzen mission.

InformationsquelleAutor Gianni Alessandro | 2014-01-26

Schreibe einen Kommentar