在sonata admin中创建sql查询

时间:2014-03-04 19:12:42

标签: sql sonata-admin

我在项目中使用sonata admin。我创建了两个管理类考试和学生。我想在考试班中创建一个动作,显示所有应该在创建新考试后通过考试的学生,这是我想要的SQL查询:

"Select * from student,exam where student.codeAdministration=exam.codeAdministration"

examAdmin.php:

<?php

namespace Exam\ExamBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;

class ExamAdmin extends Admin
{
     ////
     protected function configureFormFields(FormMapper $formMapper)
     {
        //////
     }
     protected function configureDatagridFilters(DatagridMapper $datagridMapper)
     {
        ////
     }
     protected function configureListFields(ListMapper $listMapper)
     {
        /////
     }

     protected function configureShowField(ShowMapper $showMapper)
     {
         //////
     }

}

我尝试了这个查询而没有把WHERE的条件但它不起作用:

protected function configureListFields(ListMapper $listMapper)
{
    $query = $this->modelManager->getEntityManager()->createQuery('SELECT s FROM Exam\ExamBundle\Entity\student s');

    $listMapper

        ->add('student', 'sonata_type_model', array('required' => true, 'query' => $query))
}

如何使用此查询创建此操作?

exam.php:

<?php

namespace Exam\ExamBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
class Exam
{
    /**
     * @var integer
     */
    private $idExam

    ////////

    /**
     * @var \Examens\ExamensBundle\Entity\Administration
     */
    private $codeAdministration;

    //////
    public function getIdExam()
    {
        return $this->idExam;
    }

    ///////
    public function setCodeAdministration(\Exam\ExamBundle\Entity\Administration $codeAdministration = null)
    {
        $this->codeAdministration = $codeAdministration;

        return $this;
    }

    /**
     * Get codeAdministration
     *
     * @return \Exam\ExamBundle\Entity\Administration 
     */
    public function getCodeAdministration()
    {
        return $this->codeAdministration;
    }
    ///////
}

0 个答案:

没有答案