コード例 #1
0
ファイル: TagGambit.php プロジェクト: flarum/flarum-ext-tags
 /**
  * {@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);
                 });
             }
         }
     });
 }
コード例 #2
0
ファイル: TagGambit.php プロジェクト: OlivierBarbier/tags
 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]);
                 });
             }
         }
     });
 }