/** * @param WithJoinEloquentBuilder $originalQuery * @param $search * @internal param $query */ protected function addSearchToQuery(WithJoinEloquentBuilder $originalQuery, $search) { $originalQuery->getQuery()->whereNested(function (Builder $query) use($search, $originalQuery) { $table = $this->instance->getTable(); $columns = $this->getColumns($table); foreach ($columns as $column => $type) { $field = implode('.', [$table, $column]); if ($this->isDateColumn($type)) { $field = DB::raw('convert(' . $field . ' using utf8)'); } $query->orWhere($field, 'like', $search); } /** @var ColumnInterface[] $displayColumns */ $displayColumns = $this->modelItem->getColumns(); foreach ($displayColumns as $column) { $name = $column->getName(); if (strpos($name, '.') !== false && $this->inWith($name, $originalQuery) && $this->modelItem->isWithJoinEnabled()) { $query->orWhere($name, 'like', $search); } } }); }