/** * @param BaseRepository $repository * @param Builder $query * @param string $search */ public function search($repository, $query, $search) { $name = $this->name(); if ($repository->hasColumn($name)) { $query->orWhere($query->getFrom() . ".{$name} LIKE '%{$search}%'"); } else { $query->orWhere("{$name} LIKE '%{$search}%'"); } }
/** * @param BaseRepository $repository * @param mixed $column * @param Builder $query * @param string $search */ public function apply($repository, $column, $query, $search) { $name = $column->name(); if ($repository->hasColumn($name)) { $query->andWhere($query->getFrom() . ".{$name} LIKE '%{$search}%'"); } else { $query->andWhere("{$name} LIKE '%{$search}%'"); } }
/** * @param BaseRepository $repository * @param Builder $query * @param string $orderDirection */ public function order($repository, $query, $orderDirection) { $name = $this->name(); if ($repository->hasColumn($name)) { $query->orderBy($query->getFrom() . ".{$name} {$orderDirection}"); } else { $query->orderBy("{$name} {$orderDirection}"); } }