Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2: spl_object_hash() expects parameter 1 to be object, string given in Doctrine

Tags:

I am trying to populate the database with the object User and Person by executing

persist and flush.

First of all, I am creating the Person object and persist and flush it:

$person->setFirstname($enquiry->getFirstname()); $person->setLastname($enquiry->getLastname()); $person->setLastname($enquiry->getLastname()); $person->setSex($enquiry->getSex()); $person->setEmail($enquiry->getEmail()); $person->setAddress1($enquiry->getAddress1()); $person->setAddress2($enquiry->getAddress2()); $person->setCity($enquiry->getCity()); $person->setZipcode($enquiry->getZipcode()); $country = $em->getRepository('SciForumVersion2Bundle:Country')->findOneById($enquiry->getCountry());   $person->setCountry($country);  $em->persist($person); $em->flush(); 

And then my User object:

$user->setEmail($enquiry->getEmail()); $user->setPassword($enquiry->getPassword()); $user->setPersonId($person->getId()); $user->setDegree($enquiry->getDegree()); $user->setSex($enquiry->getSex()); $user->setOrganization($enquiry->getOrganization()); $user->setTelephone($enquiry->getTelephone()); $user->setFax($enquiry->getFax()); $user->setWorkplace($enquiry->getWorkplace());   $user->setJobtype($enquiry->getJobtype()); $user->setResearchField($enquiry->getResearchField()); $user->setManageConference(0); $user->setIp( $IP); $user->setStatus( 0 ); $user->setDateRegistered( time() );  $em->persist($user); $em->flush(); 

But when trying to flush() the persist of the user object, I am getting the error:

Warning: spl_object_hash() expects parameter 1 to be object, string given in /home/milos/workspace/conference2.0/vendor/doctrine/lib/Doctrine/ORM/UnitOfWork.php line 1095  

And here is the entier LOG:

Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onEarlyKernelRequest". Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". Populated SecurityContext with an anonymous Token Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onKernelRequest". Matched route "SciForumVersion2Bundle_security_register" (parameters: "_controller": "SciForum\Version2Bundle\Controller\SecurityController::registerAction", "_route": "SciForumVersion2Bundle_security_register") Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector::onKernelController". Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". Notified event "kernel.controller" to listener "JMS\SecurityExtraBundle\Controller\ControllerListener::onCoreController". SET NAMES UTF8 ([]) SELECT t0.id AS id1, t0.country AS country2, t0.phone_prefix AS phone_prefix3 FROM countries t0 ([]) SELECT t0.id AS id1, t0.degree AS degree2 FROM web_user_degree t0 ([]) SELECT t0.id AS id1, t0.place AS place2 FROM web_user_workplace t0 ([]) SELECT t0.id AS id1, t0.code AS code2, t0.type AS type3 FROM web_user_jobtype t0 ([]) SELECT t0.id AS id1, t0.name AS name2 FROM web_user_field t0 ([]) SELECT t0.id AS id1, t0.email AS email2, t0.password AS password3, t0.salt AS salt4, t0.sex AS sex5, t0.department AS department6, t0.organization AS organization7, t0.telephone AS telephone8, t0.fax AS fax9, t0.research_keywords AS research_keywords10, t0.manage_conference AS manage_conference11, t0.ip AS ip12, t0.status AS status13, t0.date_registered AS date_registered14, t0.person_id AS person_id15, t0.degree AS degree16, t0.workplace AS workplace17, t0.jobtype AS jobtype18, t0.research_field AS research_field19, t0.person_id AS person_id20 FROM web_user t0 WHERE t0.email = ? (["[email protected]"]) SELECT t0.id AS id1, t0.country AS country2, t0.phone_prefix AS phone_prefix3 FROM countries t0 WHERE t0.id = ? (["196"]) INSERT INTO person (firstname, middlename, lastname, sex, email, address1, address2, city, state, zipcode, country) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ({"1":"Milos","2":null,"3":"Cuculovic","4":"m","5":"[email protected]","6":"Kandererstrasse 25","7":null,"8":"Basel","9":null,"10":"4057","11":196}) Notified event "kernel.exception" to listener "Symfony\Component\Security\Http\Firewall\ExceptionListener::onKernelException". Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelException". Notified event "kernel.exception" to listener "Symfony\Component\HttpKernel\EventListener\ExceptionListener::onKernelException". ErrorException: Warning: spl_object_hash() expects parameter 1 to be object, string given in /home/milos/workspace/conference2.0/vendor/doctrine/lib/Doctrine/ORM/UnitOfWork.php line 1095 (uncaught exception) at /home/milos/workspace/conference2.0/vendor/symfony/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php line 65 Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onEarlyKernelRequest". Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onKernelRequest". Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector::onKernelController". Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". Notified event "kernel.controller" to listener "JMS\SecurityExtraBundle\Controller\ControllerListener::onCoreController". 
like image 234
Milos Cuculovic Avatar asked Oct 19 '12 06:10

Milos Cuculovic


1 Answers

I have finally found the problem:

When creating the object user, instead of setting those fields

$user->setDegree(); $user->setWorkplace();   $user->setJobtype(); $user->setResearchField(); 

as objects (because of the OneToMany relation), I gived here only a string, from the form.

So, for those fields, the code would be:

$degree     = $em->getRepository('SciForumVersion2Bundle:Degree')->findOneById($enquiry->getDegree()); $workplace  = $em->getRepository('SciForumVersion2Bundle:Workplace')->findOneById($enquiry->getWorkplace()); $job_type   = $em->getRepository('SciForumVersion2Bundle:JobType')->findOneById($enquiry->getJobtype()); $research_field = $em->getRepository('SciForumVersion2Bundle:ResearchField')->findOneById($enquiry->getResearchField()); 

And then:

$user->setPerson($person); $user->setWorkplace($workplace);     $user->setJobtype($job_type); $user->setResearchField($research_field); 

So: Be careful when you are getting this kind of warnings, you probably have to check if you are populating your object in the right way.

like image 65
Milos Cuculovic Avatar answered Oct 09 '22 21:10

Milos Cuculovic