因此下面的DQL可以正常工作但是返回的记录存在问题。它仅显示主键数据。所有其他字段都为空/ null。
我知道我的代码与我的Oracle数据库通信正常,因为如果我拼错了表名,它将返回异常。我也尝试使用MySQL(我将Oracle表导出为CSV并将其导入MySQL)同样的事情发生了。 Oracle和MySQL表的字段定义都是相同的。
这是我从Doctrine转储中得到的。这仅适用于单个记录。 但如果我检索所有记录,结果都是一样的。
array(1) { [0]=> object(stdClass)#64 (5) { ["__CLASS__"]=> string(24) "AppBundle\Entity\Student" ["sspnumber"]=> int(71XXXXXX) ["student_id"]=> NULL ["course_appn_year"]=> NULL ["satac_id"]=> NULL } }
这是从Oracle看到的记录内容(出于隐私原因不得不隐藏信息):
任何想法我可能做错了什么?谢谢! :)
Edit1:如果我决定只检索student_id字段,我会从Symfony收到“semanctical error”。即使我是100%,字段名称拼写也是正确的。
Edit2:如果这很重要,请使用Symfony 2.8.8。我之所以选择这个是因为我觉得这是LTS版本。
Edit3 我总是运行php app / console cache:在通过gut同步我的资源后清除
我的控制器代码:
//$myquery = $this->getDoctrine()->getManager()
// ->createQuery("SELECT s FROM AppBundle:Student s");
$myquery = $this->getDoctrine()->getManager()
->createQuery("SELECT s FROM AppBundle:Student s WHERE s.sspnumber = :sspnumber")
->setParameter("sspnumber", 711XXXXXX);
\Doctrine\Common\Util\Debug::dump($myquery->getResult());exit();
我的实体类
<?php
// src/AppBundle/Entity/Student.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping;
/**
* @Mapping\Entity
* @Mapping\Table(name="students")
*/
class Student {
/**
* @Mapping\Column(type="integer", name="ssp_no")
* @Mapping\Id
* @Mapping\GeneratedValue(strategy="AUTO")
*/
private $sspnumber;
/*
* @Mapping\Column(type="string", name="student_id")
*/
private $student_id;
/*
* @Mapping\Column(type="integer", name="course_appn_year")
*/
private $course_appn_year;
/*
* @Mapping\Column(type="string", name="satac_id")
*/
private $satac_id;
}