Symfony Doctrine返回空值

时间:2017-08-29 16:57:52

标签: symfony doctrine entity

我使用Symfony doctrine来设置和获取MySQL数据库中的数据。我可以毫无问题地推送新数据,但是当我尝试使用findAll来获取它们时,我会得到一个长度很好但却没有的数组。

这是我的控制器:

namespace KGN\CoreBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse; 
use Symfony\Component\HttpFoundation\Response;
use Doctrine\ORM\EntityManagerInterface;
use KGN\CoreBundle\Entity\Appointment;
use KGN\CoreBundle\Entity\Testy;

class AdminController extends Controller
{
    public function indexAction()
    {
        return $this->render('KGNCoreBundle:Admin:index.html.twig');
    }


    public function aptAction()
    {

        $rep = $this->getDoctrine()
                                ->getRepository('KGNCoreBundle:Testy');

        $testy = $rep->findAll();


        // return new Response('This is for show : '. count($testy) );
        return new JsonResponse($testy);

    }

    public function createAction()
    {

        $em = $this->getDoctrine()->getManager();

        $testy = new Testy();

        $testy->setTitre('Magnifique');
        $testy->setName('Helicoptere');

        $em->persist($testy);

        $em->flush();

        return new Response('This is for create');

    }

}

以及我在浏览页面上的内容

[{},{}]

而且我的SQL表中有2个元素。

(我用php bin / console doctrine创建我的实体:生成:在“Testy”类或rep中没有版本的实体)

实体/暴躁

namespace KGN\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Testy
 *
 * @ORM\Table(name="testy")
 * @ORM\Entity(repositoryClass="KGN\CoreBundle\Repository\TestyRepository")
 */
class Testy
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="titre", type="string", length=255)
     */
    private $titre;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;


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

    /**
     * Set titre
     *
     * @param string $titre
     *
     * @return Testy
     */
    public function setTitre($titre)
    {
        $this->titre = $titre;

        return $this;
    }

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

    /**
     * Set name
     *
     * @param string $name
     *
     * @return Testy
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

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

关联代表

namespace KGN\CoreBundle\Repository;

/**
 * TestyRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class TestyRepository extends \Doctrine\ORM\EntityRepository
{
}

2 个答案:

答案 0 :(得分:1)

$em = $this->getDoctrine()->getManager(); 
$records = $em->getRepository("KGNCoreBundle:Testy")->findAll();

希望对你有所帮助

答案 1 :(得分:0)

嗨功能 findAll 返回正确答案,但返回对象数组 并且 JsonResponse 无法取消对象。
修复你必须在你的存储库中创建一个返回一个数组例子的自定义函数

public function getAll() {
    $qb = $this->createQueryBuilder('u');     


    return $qb->getQuery()->getArrayResult();
}