public function load(QueryBuilder $query, ClassMetadata $metadata)
{
$field = $this->mapping['fieldname'];
$target = $this->mapping['target'];
$boltname = $metadata->getBoltName();
if ($this->mapping['data']['has_sortorder']) {
$order = "{$field}.sortorder";
$query->addSelect($this->getPlatformGroupConcat("{$field}.sortorder", $order, '_' . $field . '_sortorder', $query));
} else {
$order = "{$field}.id";
}
$from = $query->getQueryPart('from');
if (isset($from[0]['alias'])) {
$alias = $from[0]['alias'];
} else {
$alias = $from[0]['table'];
}
$query->addSelect($this->getPlatformGroupConcat("{$field}.id", $order, '_' . $field . '_id', $query))->addSelect($this->getPlatformGroupConcat("{$field}.slug", $order, '_' . $field . '_slug', $query))->addSelect($this->getPlatformGroupConcat("{$field}.name", $order, '_' . $field . '_name', $query))->addSelect($this->getPlatformGroupConcat("{$field}.taxonomytype", $order, '_' . $field . '_taxonomytype', $query))->leftJoin($alias, $target, $field, "{$alias}.id = {$field}.content_id AND {$field}.contenttype='{$boltname}' AND {$field}.taxonomytype='{$field}'")->addGroupBy("{$alias}.id");
}