/** * Returns the SQL fragment needed to filter where a column equals a given value. * * @param \Rhubarb\Stem\Repositories\Repository $repository * @param \Rhubarb\Stem\Filters\Equals|Filter $originalFilter * @param array $params * @param array $relationshipsToAutoHydrate * @return string|void */ protected static function doFilterWithRepository(Repository $repository, Filter $originalFilter, &$params, &$relationshipsToAutoHydrate) { $columnName = $originalFilter->columnName; if (self::canFilter($repository, $columnName, $relationshipsToAutoHydrate)) { $paramName = uniqid() . str_replace(".", "", $columnName); $placeHolder = $originalFilter->detectPlaceHolder($originalFilter->greaterThan); $originalFilter->filteredByRepository = true; if (!$placeHolder) { $params[$paramName] = self::getTransformedComparisonValueForRepository($columnName, $originalFilter->greaterThan, $repository); $paramName = ":" . $paramName; } else { $paramName = $placeHolder; } if (strpos($columnName, ".") === false) { $schema = $repository->getSchema(); $columnName = $schema->schemaName . "`.`" . $columnName; } else { $columnName = str_replace('.', '`.`', $columnName); } if ($originalFilter->inclusive) { return "`{$columnName}` >= {$paramName}"; } else { return "`{$columnName}` > {$paramName}"; } } parent::doFilterWithRepository($repository, $originalFilter, $object, $params); }
/** * Returns the SQL fragment needed to filter where a column equals a given value. * * @param \Rhubarb\Stem\Repositories\Repository $repository * @param Equals|Filter $originalFilter * @param array $params * @param array $relationshipsToAutoHydrate * @return string|void */ protected static function doFilterWithRepository(Repository $repository, Filter $originalFilter, &$params, &$relationshipsToAutoHydrate) { $columnName = $originalFilter->columnName; if (self::canFilter($repository, $columnName, $relationshipsToAutoHydrate)) { $queryColumnName = $columnName; if (strpos($queryColumnName, ".") === false) { $schema = $repository->getSchema(); $queryColumnName = $schema->schemaName . "`.`" . $queryColumnName; } else { $queryColumnName = str_replace('.', '`.`', $queryColumnName); } if ($originalFilter->equalTo === null) { return "`{$queryColumnName}` IS NULL"; } $paramName = uniqid() . str_replace(".", "", $columnName); $originalFilter->filteredByRepository = true; $placeHolder = $originalFilter->detectPlaceHolder($originalFilter->equalTo); if (!$placeHolder) { $params[$paramName] = $params[$paramName] = self::getTransformedComparisonValueForRepository($columnName, $originalFilter->equalTo, $repository); $paramName = ":" . $paramName; } else { $paramName = $placeHolder; } return "`{$queryColumnName}` = {$paramName}"; } }