Php 为什么Doctrine getter方法为ID返回null?

Php 为什么Doctrine getter方法为ID返回null?,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我在Symfony项目的设置中使用自动生成的gettergetId()返回null,而其他所有getter都可以工作。你能发现什么问题吗?我应该搜索什么?我手动导入了数据库条目,但我认为这不是原因 抽象父实体 子实体 下一个外键约束位于子实体的表上: CONSTRAINT `FK_7EEF84F0BF396750` FOREIGN KEY (`id`) REFERENCES `Content` (`id`) ON DELETE CASCADE 询问 您需要从子类中删除id属性和getId()方

我在Symfony项目的设置中使用自动生成的getter
getId()
返回null,而其他所有getter都可以工作。你能发现什么问题吗?我应该搜索什么?我手动导入了数据库条目,但我认为这不是原因

抽象父实体 子实体 下一个外键约束位于子实体的表上:

CONSTRAINT `FK_7EEF84F0BF396750` FOREIGN KEY (`id`) REFERENCES `Content` (`id`)
ON DELETE CASCADE
询问
您需要从子类中删除
id
属性和
getId()
方法

//src/Acme/WebzineBundle/Entity/Review.php
namespace Acme\WebzineBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Review articles
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Review extends Content
{ 
    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=127)
     */
    private $title;


    /**
     * Get title
     *
     * @return string 
     */
    public function getTitle()
    {
        return $this->title;
    }
}
无法创建
内容
类的对象


更好
Review
类中只使用唯一的属性和方法,因为其他属性和方法是从抽象
内容
类继承的。

可能是因为您正在定义
id
属性,以删除
id
属性和
getId()
抽象类中的方法但是我应该如何设置内容实体上的主键呢?如果删除
$id
属性,则会出现下一个错误:没有为实体“Acme\WebzineBundle\Entity\Content”指定标识符/主键。每个实体都必须有一个标识符/主键。请尝试将
$id
属性添加到
内容
中,并将其从
查看
CONSTRAINT `FK_7EEF84F0BF396750` FOREIGN KEY (`id`) REFERENCES `Content` (`id`)
ON DELETE CASCADE
//src/Acme/AdminBundle/Controller/MainController.php
namespace Acme\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class MainController extends Controller
{
    public function indexAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $query = $em->createQuery(
            'SELECT post FROM AcmeWebzineBundle:Content post
             ORDER BY post.edited DESC'
        );
        $query->setMaxResults(30);

        $posts = $query->getResult();
        $latest_post = $posts[0];

        return $this->render('AcmeAdminBundle:Main:index.html.twig', array(
            'posts' => $posts,
            'id' => gettype($latest_post->getId()), // This returns null!
            'edited' => $latest_post->getEdited(),  // Any other getter works
            'title' => $latest_post->getTitle(),    // also from the child entity.
        ));
    }
}
//src/Acme/WebzineBundle/Entity/Review.php
namespace Acme\WebzineBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Review articles
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Review extends Content
{ 
    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=127)
     */
    private $title;


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