23 private $conditionResolver;
28 private $nameResolver;
33 private $columnsResolver;
38 private $resourceConnection;
52 $this->conditionResolver = $conditionResolver;
53 $this->nameResolver = $nameResolver;
54 $this->columnsResolver = $columnsResolver;
67 if (!isset($queryConfig[
'source'][
'link-source'])) {
68 return $selectBuilder;
73 $sourceAlias = $this->nameResolver->getAlias($queryConfig[
'source']);
75 foreach ($queryConfig[
'source'][
'link-source'] as $join) {
76 $joinAlias = $this->nameResolver->getAlias($join);
78 $joins[$joinAlias] = [
79 'link-type' => isset($join[
'link-type']) ? $join[
'link-type'] :
'left',
81 $joinAlias => $this->resourceConnection
82 ->getTableName($this->nameResolver->getName($join)),
84 'condition' => $this->conditionResolver->getFilter(
91 if (isset($join[
'filter'])) {
95 $this->conditionResolver->getFilter(
104 $columns = $this->columnsResolver->getColumns($selectBuilder, isset($join[
'attribute']) ? $join : []);
109 return $selectBuilder;
assemble(SelectBuilder $selectBuilder, $queryConfig)
__construct(ConditionResolver $conditionResolver, ColumnsResolver $columnsResolver, NameResolver $nameResolver, ResourceConnection $resourceConnection)