/** * 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}"; } }
protected static function doFilterWithRepository(Repository $repository, Filter $originalFilter, &$params, &$propertiesToAutoHydrate) { $filters = $originalFilter->getFilters(); $filterSql = []; foreach ($filters as $filter) { $thisFilterSql = $filter->filterWithRepository($repository, $params, $propertiesToAutoHydrate); if ($thisFilterSql != "") { $filterSql[] = $thisFilterSql; } } if (sizeof($filterSql) > 0) { return "( " . implode(" " . $originalFilter->booleanType . " ", $filterSql) . " )"; } return ""; }
public function getTransformFromRepository() { return function ($data) { $value = json_decode($data[$this->columnName], true); return Filter::speciateFromSettingsArray($value); }; }
/** * append a model to the list and correctly set any fields required to make this re-fetchable through the same list. * * @param \Rhubarb\Stem\Models\Model $model * @return \Rhubarb\Stem\Models\Model|null */ public function append(Model $model) { $result = null; // If the list was filtered make sure that value is set on the model. if ($this->filter !== null) { $result = $this->filter->setFilterValuesOnModel($model); } $model->save(); // Make sure the list has been fetched so we can pop the unique identifier on the end. if ($this->fetched) { $this->uniqueIdentifiers[] = $model->UniqueIdentifier; } return $result === null ? $model : $result; }
public function getSettingsArray() { $settings = parent::getSettingsArray(); $settings["columnName"] = $this->columnName; return $settings; }