withDirection($item[1] ?? Order::ASC); } if (is_string($item)) { return Order::fromString($item); } throw new RuntimeException("Bad order item."); }, $this->params['orderBy'] ?? [] ); } /** * Get WHERE clause. */ public function getWhere(): ?WhereClause { $whereClause = $this->params['whereClause'] ?? null; if ($whereClause === null || $whereClause === []) { return null; } $where = WhereClause::fromRaw($whereClause); if (!$where instanceof WhereClause) { throw new RuntimeException(); } return $where; } /** * Get JOIN items. * * @return Join[] */ public function getJoins(): array { return array_map( function ($item) { if (is_string($item)) { $item = [$item]; } $conditions = isset($item[2]) ? WhereClause::fromRaw($item[2]) : null; return Join::create($item[0]) ->withAlias($item[1] ?? null) ->withConditions($conditions); }, $this->params['joins'] ?? [] ); } /** * Get LEFT JOIN items. * * @return Join[] */ public function getLeftJoins(): array { return array_map( function ($item) { if (is_string($item)) { $item = [$item]; } $conditions = isset($item[2]) ? WhereClause::fromRaw($item[2]) : null; return Join::create($item[0]) ->withAlias($item[1] ?? null) ->withConditions($conditions); }, $this->params['leftJoins'] ?? [] ); } /** * @param array $params */ private static function validateRawParamsSelecting(array $params): void { } }