Symfony2 发布变量 id 与从数据库获取对象


Symfony2 issue variable id with getting objects from database

我想从数据库获取$id$name但我得到这个异常:

查询 Grupa''ProjektBundle''Entity''Car 的标识符 ID 缺失

我在实体Car的教义注释中GeneratedValue(strategy="AUTO").我该如何解决这个问题?路由匹配!

此外,我有一个数据库条目,其 id 为 1,名称带有指向图像 (http://www.supercarworld.com/images/fullpics/595.jpg) 的某个 URL 的值。

这是我的控制器,叫做SupercarsController.php

namespace Grupa'ProjektBundle'Controller;
use Grupa'ProjektBundle'Entity'Car;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
use Symfony'Component'HttpFoundation'Request;
class SupercarsController extends Controller
{
    public function scAction($id = null, $name = null){
        $car = new Car();
        // $car->setName('http://www.supercarworld.com/images/fullpics/595.jpg');
        // em entity manager
        // $em = $this->getDoctrine()->getManager();
        // $em->persist($car);
        // $em->flush();
        $car = $this->getDoctrine()
        ->getRepository('GrupaProjektBundle:Car')
        ->find($id, $name);
        return $this->render('GrupaProjektBundle:Sc:supercars.html.twig');
    }   
    public function showAction($slug)
    {
        $url = $this->generateUrl('grupa_projekt_supercars',
            array('slug' => 'marka')
            );
        return $this->render('GrupaProjektBundle:Sc:makes.html.twig');
    }
} 

这是我的实体汽车.php

namespace Grupa'ProjektBundle'Entity;
use Doctrine'ORM'Mapping as ORM;
/**
* @ORM'Entity
*/
class Car
{   /**
    * @ORM'Id
    * @ORM'Column(type="integer")
    * @ORM'GeneratedValue(strategy="AUTO")
    *
    */
    protected $id;
    /**
    * @ORM'Column(type="string")
    *
    */
    protected $name;
    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }
    public function setId($id)
    {
        $this->id = $id;
        return $id;
    }
    /**
     * Set name
     *
     * @param string $name
     *
     * @return Car
     */
    public function setName($name)
    {
        $this->name = $name;
        return $this;
    }
    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
}

您错误地调用了find()函数。 由于 ID 是唯一的,因此实际上只需在 ID 上调用方法,如下所示:

$car = $this->getDoctrine()
    ->getRepository('GrupaProjektBundle:Car')
    ->find($id);

但是,如果需要,仍可以搜索 id 和名称,但必须将查询更改为:

$car = $this->getDoctrine()
    ->getRepository('GrupaProjektBundle:Car')
    ->findOneBy(array('id' => $id, 'name' => $name));
<</div> div class="answers">

只是为了通知其他人这一点:当我尝试使用空值变量调用方法find()时,我收到了相同的错误消息。

我正在做:find($userId)没有意识到$userId == null,我收到了让我进入这个主题的错误消息。

希望它能从别人那里节省一些时间