Tôi có một nhiều đến một mối quan hệ giữa các thực thể Dự án và Khóa học vì mỗi khóa học có thể có nhiều dự án rất nhiều dự án có thể liên quan tới cùng một khóa học.Symfony2: Cảnh báo: spl_object_hash() dự kiến tham số 1 là đối tượng, số nguyên cho
Đây là những thực thể của tôi:
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;
và
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ỗi xuất hiện khi tôi cố gắng để chèn một dự án mới cho khóa học của tôi, đây là trình tạo hình của tôi:
$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')));
Tôi cố gắng chèn các dữ liệu này tạo đối tượng Project và điền nó với kết quả của biểu mẫu khi bạn có thể xem:
$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();
Vấn đề nên liên quan đến lệnh $project->setCourse(5);
và tôi đã nhìn thấy rằng nếu tôi loại bỏ các mối quan hệ giữa dự án và khóa học lỗi không xuất hiện. Các lỗi biến mất ngay cả khi tôi nhận xét dòng được sử dụng để thiết lập id khóa học, vì vậy tôi nghĩ rằng tôi có một vấn đề với mối quan hệ này nhưng tôi không thể hiểu được nơi.
Tôi vừa đọc các câu hỏi khác như thế này trên stackoverflow nhưng nó không giúp tôi.
Xin cảm ơn trước.
Bây giờ là rõ ràng hơn, cảm ơn bạn , thực sự;) –
Đã cho tôi vài giờ để đến thời điểm này và giải pháp của bạn thực sự hữu ích. Cảm ơn –
Thực ra sẽ tốt hơn nếu sử dụng '$ this-> getDoctrine() -> getManager() -> getReference ('Không gian tên: Khóa học', 5); ' mà không cần tìm kiếm trong db! – Full