NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Šimon Balatin:28.8.2017 15:54

Ahojte, mám entitu status, ve které je:

/**
 * @ORM\COlumn(type="string", length=10)
 */
public $section;

když pak chci pomocí QueryBuilderu vyhledat status v dané sekci, tak mám objekt:

<?php
/**
 * Created by PhpStorm.
 * User: Honza
 * Date: 26.08.2017
 * Time: 17:57
 */

namespace App\Model\Queries;


use Kdyby;
use Kdyby\Doctrine\QueryObject;
use App\Forms\StatusFormFactory;

class StatusQuery extends QueryObject
{
        /** @var  array */
        protected $criteria;

        /**
         * @param \Kdyby\Persistence\Queryable $repository
         * @return \Doctrine\ORM\Query|\Doctrine\ORM\QueryBuilder
         */
        protected function doCreateQuery(Kdyby\Persistence\Queryable $repository)
        {
                $qb =  $repository->createQueryBuilder()
                        ->select('s')
                        ->from('App\Model\Entities\Status', 's')
                        ->orderBy('s.time', 'DESC')
                        ->setMaxResults(1);

                foreach ($this->criteria as $criteria) $criteria($qb);

                return $qb;
        }


        public function onlyMainSection()
        {
                $this->criteria[] = function (Kdyby\Doctrine\QueryBuilder $qb){
                        $qb->andWhere('s.section =  ' . StatusFormFactory::STATUS_MAIN); // => s.section = main
                };
        }
}

chybová hláška:
Kdyby\Doctrine\Qu­eryException

[App\Model\Qu­eries\StatusQu­ery] [Semantical Error] line 0, col 60 near 'main ORDER BY': Error: 'main' is not defined.

dotaz z tracy:

SELECT s
FROM App\Model\Entities\Status s
WHERE s.section = main
ORDER BY s.time DESC

nevíte, proč mi t nefunguje ? Děkuji

 
Odpovědět
28.8.2017 15:54
Avatar
plelovsky
Člen
Avatar
plelovsky:29.8.2017 10:46

Kolem main by měly být apostrofy:

SELECT s
FROM App\Model\Entities\Status s
WHERE s.section = 'main'
ORDER BY s.time DESC
 
Nahoru Odpovědět
29.8.2017 10:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.