mam wiele do jednego relacji pomiędzy podmiotami Projektu i przedmiotu ponieważ każdy kurs może mieć wiele projektów tak wiele projektów może być związane z ten sam kurs.Symfony2: Ostrzeżenie: spl_object_hash() oczekuje parametr 1 za przedmiot, całkowita podana
To są moje podmioty:
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;
i
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;
Błąd pojawia się, gdy próbuję wstawić nowy projekt dla mojego kursu, to moja forma budowniczy:
$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')));
Próbuję wstawić te dane, tworząc obiekt projektu i wypełniając go wynikiem formularza, jak to tylko możliwe patrz:
$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();
Problem powinien być związany z poleceniem $project->setCourse(5);
i widziałem, że jeśli usunąć relację między Project i oczywiście błąd się nie pojawia. Błąd zniknie, nawet jeśli skomentuję linię używaną do ustawienia identyfikatora kursu, więc myślę, że mam problem z tą relacją, ale nie mogę zrozumieć, gdzie.
Właśnie czytałem inne pytanie w ten sposób na stackoverflow, ale to nie pomaga mi.
Z góry dziękuję.
Teraz jest wyraźniejszy, dziękuję , naprawdę;) –
Zajęło mi to kilka godzin, aby dostać się do tego punktu, a twoje rozwiązanie było naprawdę pomocne. Dzięki –
Właściwie byłoby lepiej użyć '$ this-> getDoctrine() -> getManager() -> getReference ('Namespace: Course', 5);' bez wyszukiwania w db! – Full