/** * {@inheritdoc} */ protected function conditions(AbstractSearch $search, array $matches, $negate) { $slugs = explode(',', trim($matches[1], '"')); // TODO: implement $negate $search->getQuery()->where(function ($query) use($slugs) { foreach ($slugs as $slug) { if ($slug === 'untagged') { $query->orWhereNotExists(function ($query) { $query->select(new Expression(1))->from('discussions_tags')->where('discussions.id', new Expression('discussion_id')); }); } else { $id = $this->tags->getIdForSlug($slug); $query->orWhereExists(function ($query) use($id) { $query->select(new Expression(1))->from('discussions_tags')->where('discussions.id', new Expression('discussion_id'))->where('tag_id', $id); }); } } }); }
protected function conditions(Search $search, array $matches, $negate) { $slugs = explode(',', trim($matches[1], '"')); // TODO: implement $negate $search->getQuery()->where(function ($query) use($slugs) { foreach ($slugs as $slug) { if ($slug === 'untagged') { $query->orWhereNotExists(function ($query) { $query->select(app('flarum.db')->raw(1))->from('discussions_tags')->whereRaw('discussion_id = discussions.id'); }); } else { $id = $this->tags->getIdForSlug($slug); $query->orWhereExists(function ($query) use($id) { $query->select(app('flarum.db')->raw(1))->from('discussions_tags')->whereRaw('discussion_id = discussions.id AND tag_id = ?', [$id]); }); } } }); }