Добавление запроса в класс SonataAdmin (Symfony4) - PullRequest
0 голосов
/ 18 ноября 2018

Я не могу ввести запрос без ошибок в параметре запроса ModelType :: class в переменной $ formMapper.

У меня есть, в src / Entity / Tareaspendientes.php

....
    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Prioridad", inversedBy="tareas")
     */
    private $prioridad;

в src / Entity / Prioridad.php:

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

и в src / Admin / TareaspendientesAdmin.php:

....
use App\Entity\Tareaspendientes;
use App\Entity\Prioridad;
....


class TareaspendientesAdmin extends AbstractAdmin
{
.....
        protected function configureFormFields(FormMapper $formMapper)
        {

         ....

                $formMapper
                                ....
                                ->add('prioridad', ModelType::class, [ 
                                        'query' => $queryBuilder 
                                ])
                               ......

с "-> add ('prioridad', ModelType :: class [query '=> ...") Я попытался перечислить поле prioridad в объекте Prioridad.

Для переменной $ queryBuilder я попробовал следующие варианты:

//Option 1
$queryBuilder = $this->getModelManager()
           ->getEntityManager(Prioridad::class)
           ->createQueryBuilder('c')
           ->select('c.prioridad')
           ->from('App:Prioridad', 'c')
           ->orderBy('c.prioridad', 'ASC');

//Option 2
$queryBuilder = $this->getModelManager('
            SELECT s.prioridad 
              FROM App:Prioridad s
          ORDER BY s.prioridad');

//Option 3
$entity = new \App\Entity\Prioridad();
$queryBuilder=this->modelManager->getEntityManager($entity)->createQuery('SELECT t.prioridad FROM \App\Entity\Prioridad t ORDER BY t.prioridad ASC');

//Option 4
$em = $this->getModelManager()->getEntityManager(Prioridad::class);

        $queryBuilder = $em->createQueryBuilder()
                    ->select('p.prioridad')
                    ->from('App:Prioridad',  'p')
                    ->orderby('p.prioridad')
                    ->getQuery()
            ;   

//Option 5
$em = $this->getDoctrine()->getManager();
$queryBuilder = $em->getRepository('App:Tareaspendientes')->findPrioridades();

но никто не работает. В последнем он выдает следующую ошибку:

Attempted to call an undefined method named "getDoctrine" of class "App\Admin\TareaspendientesAdmin

Есть идеи?

...