Symfony 2 - 实体没有字段%name%

时间:2013-10-18 14:40:49

标签: php symfony doctrine

您好我正在尝试按标题选择

实体\ Pages.php

<?php
namespace Dproc\MainBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @IgnoreAnnotation("fn")
 *
 */
/**
 * @ORM\Entity
 * @ORM\Table(name="pages")
 */
class Pages
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $Id;

    /**
     * @ORM\Column(type="text")
     */
    protected $page_title;

    /**
     * @ORM\Column(type="text")
     */
    protected $page_content;

    /**
     * @ORM\Column(type="text")
     */
    protected $page_category;

    /**
     * Get Id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->Id;
    }

    /**
     * Set page_title
     *
     * @param string $pageTitle
     * @return Pages
     */
    public function setPageTitle($pageTitle)
    {
        $this->page_title = $pageTitle;

        return $this;
    }

    /**
     * Get page_title
     *
     * @return string 
     */
    public function getPageTitle()
    {
        return $this->page_title;
    }

    /**
     * Set page_content
     *
     * @param string $pageContent
     * @return Pages
     */
    public function setPageContent($pageContent)
    {
        $this->page_content = $pageContent;

        return $this;
    }

    /**
     * Get page_content
     *
     * @return string 
     */
    public function getPageContent()
    {
        return $this->page_content;
    }

    /**
     * Set page_category
     *
     * @param string $pageCategory
     * @return Pages
     */
    public function setPageCategory($pageCategory)
    {
        $this->page_category = $pageCategory;

        return $this;
    }

    /**
     * Get page_category
     *
     * @return string 
     */
    public function getPageCategory()
    {
        return $this->page_category;
    }
}

CourseController

<?php

namespace Dproc\MainBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Dproc\MainBundle\Entity\Pages;
use Symfony\Component\HttpFoundation\Response;

class CourseController extends Controller
{
    public function IndexAction($slug)
    {
        $page = $this->getDoctrine()
           ->getRepository('DprocMainBundle:Pages')
           ->findByPageTitle($slug);

        if (!$page) {
           throw $this->createNotFoundException('No product found for slug '.$slug);
        }
        return $this->render('DprocMainBundle:Dproc:single.html.twig',array('page' => $page));
    }
}

我试图通过page_title找到它,所以我尝试了findByPageTitle($ slug),但它显示了

Entity 'Dproc\MainBundle\Entity\Pages' has no field 'pageTitle'. You can therefore not call 'findByPageTitle' on the entities' repository

我做错了什么,我怎样才能逐页选择_title

2 个答案:

答案 0 :(得分:6)

Symfony的编码标准规定您需要对变量使用camelcase语法。

我的猜测是您使用了下划线语法,因为您希望数据库中的列具有下划线。

您可以使用属性name指定Column注释来指定列名。

/**
 * @ORM\Column(name="page_title", type="text")
 */
protected $pageTitle;

/**
 * @ORM\Column(name="page_content", type="text")
 */
protected $pageContent;

/**
 * @ORM\Column(name="page_category", type="text")
 */
protected $pageCategory;

我强烈建议您阅读coding standards,以便将来不会遇到这类问题。

答案 1 :(得分:1)

在您的实体中使用此代码段:

/**
 * @ORM\Column(name="page_title", type="text")
 */
protected $pageTitle;

不要忘记修改字段的get和set。

尝试并坚持使用Symfony2标准:http://symfony.com/doc/current/contributing/code/standards.html