2014-10-30 22 views
5

Ben varlıklar Projesi ve Ders her ders bu kadar çok proje ile ilgili olabilir birçok proje var, çünkü aralarında bir ilişki için bir çok var verilmiş olmasını bekler aynı ders.Symfony2'nin: Uyarı: spl_object_hash() parametresi 1 nesne, tamsayı

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; 

ve

, bu benim form oluşturucu benim kurs için yeni bir proje eklemek çalıştığınızda hata görünür

olduğunu

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; 
:

  $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'))); 

Bunlar

benim varlıklardır

Bu verileri bir Proje nesnesi oluşturmaya ve formun sonucu olarak doldurmaya çalışıyorum. bkz:

$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(); 

sorun komuta $project->setCourse(5); ile ilişkili olmalı ve ben Projesi ve Course arasındaki ilişkiyi kaldırırsanız hata görünmüyor gördüm. Hata, ders kimliğini ayarlamak için kullanılan satırı yorumlamam bile kayboluyor, bu yüzden bu ilişkiyle ilgili bir sorunum olduğunu düşünüyorum ama nerede olduğunu anlayamıyorum.

Stackoverflow üzerinde başka bir soru okudum ama bana yardımcı olmuyor.

Şimdiden teşekkürler.

cevap

6

Sadece bir nesne ile Course örneğini kullanmanızın ardından, kursun kimliği işe yaramaz.

Sen yapabilirdi:

//... 
$course = $this->getDoctrine() 
       ->getManager() 
       ->getRepository('Namespace:Course') 
       ->findOneById(5); 
$project->setCourse($course); 
//... 

Varlık zaten sadece yaparak bir db aramasına gerek kalmadan ayarlayabilirsiniz varolduğunu biliyorum Tam bahseder gibi:

$project->setCourse($this->getDoctrine() 
         ->getManager() 
         ->getReference('Namespace:Course', 5) 
); 
+0

Şimdi nettir, teşekkür ederim , gerçekten;) –

+0

Bu noktaya ulaşmak için bana birkaç saat sürdü ve çözümünüz gerçekten yardımcı oldu. Teşekkürler –

+1

Aslında '$ this-> getDoctrine() -> getManager() -> getReference ('Ad alanı: Course', 5);' db arama yapmadan kullanmak daha iyi olurdu! – Full