2016-10-02 11 views
1

という名前の未定義のメソッドを呼び出すようにしようと、私はので、ここでのサービスにQueryBuilderを行う方法を理解しようとしている私が何をやったかである:は「createQueryBuilder」

私のサービスを作成します。

namespace OC\PlatformBundle\PurgerAdvert; 

use Doctrine\ORM\EntityManager; 

class PurgerAdvert 
{ 

    private $em; 

    public function __construct(EntityManager $em) { 
     $this->entityManager = $em; 

    } 

    public function purge($days) 
    { 

$queryBuilder = $this->createQueryBuilder(); 
$queryBuilder->select('a')->from('OCPlatformBundle:Advert', 'a'); 

// get the Query from the QueryBuilder here ... 
$query = $qb->getQuery(); 
return $result = $query->getResult(); 
    } 

} 

はservices.ymlでそれを宣言します。私はその前にエラーをしましたので、

oc_platform.purger.advert: 
     class: OC\PlatformBundle\PurgerAdvert\PurgerAdvert 
     arguments: ['@doctrine.orm.entity_manager'] 

私は、クエリを削除します。"Attempted to call an undefined method named "createQueryBuilder" of class "OC\PlatformBundle\PurgerAdvert\PurgerAdvert""私は適切にEntityManagerを呼び出すことはありませんでしたが、私は私を見ていないことを前提としてい間違い...

おかげであなたの助け:)

+0

$ this-> createQueryBuilder() '$ em-> createQueryBuilder()'の代わりに – ciurciurek

+1

'$ this-> entityManagerを使うために' private $ em'の代わりに 'private $ entityManager'を変更した方が良いでしょう - > createQueryBuilder() 'を実行します。 –

+0

私はciurciurekのソリューションを試しましたが、 "Notice:Undefined variable:em"/gp_sfloverの解決策が働いています!ありがとう:) –

答えて

0

のためにあなたはentityManagerのすべての時間を入力したくないかもしれないので、両方の回答の組み合わせは動作するはずです:

namespace OC\PlatformBundle\PurgerAdvert; 

use Doctrine\ORM\EntityManager; 

class PurgerAdvert 
{ 
    private $entityManager; 

    public function __construct(EntityManager $em) { 
     $this->entityManager = $em; 
    } 

    public function purge($days) 
    { 
     $queryBuilder = $this->entityManager->createQueryBuilder(); 
     $queryBuilder->select('a')->from('OCPlatformBundle:Advert', 'a'); 

     // get the Query from the QueryBuilder here ... 
     $query = $qb->getQuery(); 
     return $result = $query->getResult(); 
    } 
} 

はそれを試してみてください、私は思いますそれは動作するはずです。

+0

あなたは '$ this-> entityManager'を忘れてしまいました:-) –

+0

私のコードはあまりにも@gp_sfloverもうんざりしています。私はコードを編集したので、それは良いはずです。ダブルチェックありがとう... ;-) –

関連する問題