/**
* Gets a list of published entities as an array id => label
*
* @param CompositeExpression $expr Use $factory->getDatabase()->getExpressionBuilder()->andX()
* @param array $parameters Parameters used in $expr
* @param string $labelColumn Column that houses the label
* @param string $valueColumn Column that houses the value
*
* @return array
*/
public function getSimpleList(CompositeExpression $expr = null, array $parameters = array(), $labelColumn = null, $valueColumn = 'id')
{
$q = $this->_em->getConnection()->createQueryBuilder();
$alias = $prefix = $this->getTableAlias();
if (!empty($prefix)) {
$prefix .= '.';
}
$tableName = $this->_em->getClassMetadata($this->getEntityName())->getTableName();
$class = '\\' . $this->getClassName();
$reflection = new \ReflectionClass(new $class());
// Get the label column if necessary
if ($labelColumn == null) {
if ($reflection->hasMethod('getTitle')) {
$labelColumn = 'title';
} else {
$labelColumn = 'name';
}
}
$q->select($prefix . $valueColumn . ' as value, ' . $prefix . $labelColumn . ' as label')->from($tableName, $alias)->orderBy($prefix . $labelColumn);
if ($expr !== null && $expr->count()) {
$q->where($expr);
}
if (!empty($parameters)) {
$q->setParameters($parameters);
}
// Published only
if ($reflection->hasMethod('getIsPublished')) {
$q->andWhere($q->expr()->eq($prefix . 'is_published', ':true'))->setParameter('true', true, 'boolean');
}
return $q->execute()->fetchAll();
}