簡體   English   中英

Symfony2對象

[英]Symfony2 objects

我在從原則對象中獲取數據時遇到問題。 當我使用findOne(id)並嘗試訪問$result->getVariable()之類的任何變量時,它都可以正常工作。 但是,一旦我使用教義查詢構建器並添加一些條件,它就會說

Attempted to call method "getVariable" on class "Doctrine\ORM\QueryBuilder....

我的代碼是

foreach ($Ids as $Id) {
            $result = $em->createQueryBuilder()->select("s")
                ->from("Entity", "s")
                ->where('s.id = :s_id')
                ->setParameters(array('s_id'=>$Id));
     if($category)
     {

        $result->innerJoin('s.cat','c');
        $result->where("c.primaryClassification =   :category");
        result->setParameter('category',$category);
    }

}

起作用的代碼是

foreach ($Ids as $Id) {
$em->getRepository("Entity")->findOneById($Id);
}

我認為這是由於使用的方法類型不同而導致返回數據的差異。

提前致謝!

這是因為QueryBuilder僅用於構建查詢(BA-DUM-TSS)。 你需要的是你建立了正確的設置參數后執行查詢=

foreach ($Ids as $Id) {
    $query[] = $em->createQueryBuilder()->select("s")
        ->from("Entity", "s")
        ->where('s.id = :s_id')
        ->setParameter('s_id', $Id))
        ->getQuery()
        ->getResult();
}

如果您正在尋找數據數組,那么如果您使用不帶foreach的IN語句並將該數組直接傳遞給setParameter ,則為BEST

$result = $em->createQueryBuilder()->select("s")
    ->from("Entity", "s")
    ->where('s.id IN (:s_id)')
    ->setParameter('s_id', $Ids)
    ->getQuery
    ->getResult();

如果您需要有關查詢生成器的更多信息, 請檢查docs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM