public static function completeEntities(ModelConfig $modelConfig) { $m2mData = $modelConfig->getManyToManyRelationData(); if (!empty($m2mData['relationData'])) { $groupBy = $m2mData['table'] . "." . $m2mData['idProperty']; $select = array($m2mData['table'] . ".*", $groupBy); $joins = array(); foreach ($m2mData['relationData'] as $relationData) { $select[] = $relationData['relationTable'] . "." . $relationData['relatedModelId'] . " AS " . $relationData['relatedModelId']; $joins[] = array('table' => $relationData['relationTable'], 'key1' => $m2mData['table'] . ".id", 'key2' => $relationData['relationTable'] . "." . $relationData['relationId']); } $return = static::select($select); foreach ($joins as $leftJoin) { $return->leftJoin($leftJoin['table'], $leftJoin['key1'], "=", $leftJoin['key2']); } $return->groupBy($groupBy); return $return; } else { return static::select('*'); } }