IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
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.