首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用/gecko/{name}/show而不是/gecko/{id}/show

使用/gecko/{name}/show而不是/gecko/{id}/show
EN

Stack Overflow用户
提问于 2015-04-29 22:45:53
回答 1查看 114关注 0票数 2

我是symfony的新手,所以请原谅任何简单的错误。

我已经通过控制台为我的壁虎生成了一个CRUD。一切正常,一切都很好。但是,我想要做的是使用URL中的名称,而不是ID,并使查询按预期工作。例如:

目前我有http://breedr.dev/app_dev.php/gecko/1/show,但我希望它是http://breedr.dev/app_dev.php/gecko/Zilly/show -我希望这是有意义的。

这是我Gecko控制器中的Gecko

代码语言:javascript
运行
复制
public function showAction($name)
    {
        $em = $this->getDoctrine()->getManager();

        $entity = $em->getRepository('BreedrGeckoBundle:Gecko')->find($name);

        if (!$entity) {
            throw $this->createNotFoundException('Unable to find Gecko entity.');
        }

        $deleteForm = $this->createDeleteForm($name);

        return array(
            'entity'      => $entity,
            'delete_form' => $deleteForm->createView(),
        );
    }

但我的问题是“找不到壁虎实体”。在查看日志之后,我可以看到正在发生这样的事情:

代码语言:javascript
运行
复制
DEBUG - SELECT t0.id AS id1, t0.name AS name2, t0.aquisition_date AS aquisition_date3, t0.morph AS morph4, t0.sex AS sex5, t0.genetics AS genetics6, t0.bio AS bio7, t0.bred AS bred8, t0.hatchling AS hatchling9, t0.clutch AS clutch10, t0.image_name AS image_name11, t0.updatedAt AS updatedAt12 FROM Gecko t0 WHERE t0.id = ?

显然,在这里,您可以看到WHERE在使用id字段,而它应该是name。我需要做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 22:51:47

代码语言:javascript
运行
复制
 $entity = $em->getRepository('BreedrGeckoBundle:Gecko')->find($name);

更改为

代码语言:javascript
运行
复制
 $entity = $em->getRepository('BreedrGeckoBundle:Gecko')->findOneByName($name);

关于你关于医生的问题:

我不能很快找到医生推荐人,但我认为这只是理解理论“魔术”方法的问题。

如果您将查看源代码https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/EntityRepository.php,因此您将看到“查找”方法使用"id“作为预期的param,但如果您需要获得另一个条件,则应该使用”魔术“原则作为findBy%Field% (用于乘记录)或findOneBy%Field% (用于单个记录)。

Update2:但是如果你需要用乘法值搜索,那么你应该按照findBy(‘age’=> 20,‘姓氏’=>‘Miller’)或findOneBy(‘年龄’=> 20,‘=>’Miller‘)进行搜索。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29955918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档