使用Parameters在Doctrine ORM中使用createQueryBuilder选择特定列

时间:2015-07-27 07:37:47

标签: php symfony doctrine-orm

$qb = $this->em->createQueryBuilder()
    ->select("p.$input")
    ->from('AppBundle:Profile', 'p')
    ->where("p.$input LIKE :value")
    ->setParameter('value', '%'.$value.'%')
    ->setMaxResults(5);

$results = $qb->getQuery()->execute();
$response['results'] = $results;

有没有办法使用setParameter设置$input

1 个答案:

答案 0 :(得分:0)

我是这样做的:

class EntityHelper{
    /**
     * @param Object $entity
     * 
     * @return array
     */
    public static function entityToArray($entity) {
        $className = "\0" . get_class($entity) . "\0";
        $entityAsArray = (array)$entity;
        $retArray = array();
        foreach ($entityAsArray as $key => $val) {
            $retArray[str_replace($className, '', $key)] = $val;
        }
        return $retArray;
    }

    /**
     * @param Object $entity
     * @param string $parameter
     *
     * @return boolean
     */
    public static function checkEntityHasParameter($entity, $parameter) {
        return array_key_exists($parameter, self::entityToArray($entity));
    }
}

使用 checkEntityHasParameter 静态方法检查您的表格中是否会出现该字段。

警告!它仅适用于标准类型字段,有时也适用于使用映射。