Попытка вызвать метод getDoctrine для класса Symfony\Component\HttpFoundation\Response

Я пытался добавить несколько автомобилей пользователю, но всегда получаю эту ошибку, я искал в Интернете ответ в течение 2 дней, и я все еще застрял PS: я новичок в Symfony и доктрине

<?php

namespace CarsBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityRepository;

class CarsController extends Controller
{

    public function addCarsAction($iduser,$carName,$carPrice,$carVIN)
    {
        $cars = new cars();
        $cars->setPic('')
             ->setName($carName)
             ->setModle(Null)
             ->setPrice($carPrice)
             ->setVin($carVIN)
             ->setIdUser($iduser);
        //$this->forward('acme.controller.tagclass:ParseWebsite',array($categoryid));
            $em1 = $this->forward('app.cars_controller')
                        ->getDoctrine()->getManager()
                        ->getRepository('OBCarsTest1Bundle:cars')
                        ->persist($cars)
                        ->flush();
        }
        public function addCarsToUserAction()
        {       
            $this->addCarsAction(1,'bmw',45000,'o102384');
            //$this->addCarsAction(1,'mercedes',53000,'o224384');
            //$this->addCarsAction(1,'nisan',25000,'o686495');
            //$this->addCarsAction(2,'golf',44000,'o659826');
            //$this->addCarsAction(2,'toyota',23000,'o255325');

            //test if it works
            $repository = $this->getDoctrine()
                ->getRepository('OBCarsTest1Bundle:cars');      
            $cars = $repository->findOneById(3);

            return new Response('Created cars : \n '.$cars);
        }
    }

person daroum    schedule 05.05.2015    source источник


Ответы (1)


Вы слишком много думаете об этом, просто используйте: $em1 = $this->getDoctrine()->getManager() вместо

$em1 = $this->forward('app.cars_controller')->getDoctrine()->getManager()

и для постоянства, предполагая, что у вас есть правильное отображение ORM, вам просто нужно добавить: $em1->persist($cars); $em1->flush(); и оно сохранит его в базе данных

person Alexandru Olaru    schedule 05.05.2015
comment
Предупреждение: spl_object_hash() ожидает, что параметр 1 будет объектом, заданным целым числом - person daroum; 05.05.2015
comment
Чтобы ответить на ваш следующий вопрос, мне нужно взглянуть на код, потому что без отображения ORM бессмысленно обсуждать. Вам нужно обновить вопрос с отображением. - person Alexandru Olaru; 05.05.2015