Ho una relazione molti a uno tra le entità progetto e Corso perché ogni corso può avere molti progetti di tanti progetti potrebbe essere correlato a lo stesso corso.Symfony2: Attenzione: spl_object_hash() si aspetta parametro 1 per essere oggetto, integer data
Questi sono i miei soggetti:
class Project{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
//... other fields ...
//----------------------- DATABASE RELATIONSHIP ----------------//
//PROJECT-COURSE - M:1 relationship
/**
* @ORM\ManyToOne(targetEntity="Course", inversedBy="project")
* @ORM\JoinColumn(name="course_id", referencedColumnName="id")
**/
private $course;
e
class Course{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
//... other fields ...
//----------------------- DATABASE RELATIONSHIP----------------//
//COURSE-PROJECT 1:M relationship
/**
* @ORM\OneToMany(targetEntity="Project", mappedBy="course")
**/
private $project;
L'errore viene visualizzato quando si tenta di inserire un nuovo progetto per il mio corso, questo è il mio generatore di forma:
$builder
->add('name', 'text', array(
'attr' => array('class' => 'form-control')))
->add('description', 'textarea', array(
'attr' => array('class' => 'form-control', 'rows' => '10')))
->add('submit', 'submit', array(
'attr' => array('class' => 'btn btn-primary')));
Cerco di inserire questi dati creando un oggetto Project e riempiendolo con il risultato del modulo come è possibile vedi:
$project->setName($form->get('name')->getData());
$project->setDescription($form->get('description')->getData());
$project->setPhasesNumber($form->get('phases_number')->getData());
$project->setPathNumber($form->get('path_number')->getData());
$project->setYear(date('Y'));
$project->setCourse(5); //number 5 is just a test
$em = $this->getDoctrine()->getManager();
$em->persist($project);
$em->flush();
Il problema dovrebbe essere collegato al comando $project->setCourse(5);
e ho visto che se rimuovo il rapporto tra progetto e Corso non appare il bug. L'errore scompare anche se commento la riga usata per impostare l'ID del corso, quindi penso di avere un problema con questa relazione ma non riesco a capire dove.
Ho appena letto altre domande come questa su StackOverflow ma non mi aiuta.
Grazie in anticipo.
Ora è più chiaro, grazie , davvero;) –
Mi ci sono volute diverse ore per arrivare a questo punto, e la tua soluzione è stata davvero d'aiuto. Grazie –
In realtà sarebbe meglio usare '$ this-> getDoctrine() -> getManager() -> getReference ('Namespace: Course', 5);' senza cercare in db! – Full