首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp 3搜索标签

Cakephp 3搜索标签
EN

Stack Overflow用户
提问于 2017-03-11 14:04:02
回答 1查看 439关注 0票数 0

从Cakebook中,我们得到了以下工作示例:

代码语言:javascript
复制
public function findTagged(Query $query, array $options) {
  return $this->find()
    ->distinct(['Articles.id'])
    ->matching('Tags', function ($q) use ($options) {
    if (empty($options['tags'])) {
        return $q->where(['Tags.title IS' => null]);
    }
    return $q->where(['Tags.title IN' => $options['tags']]);
  });
}

例如,使用地址文章/ tag /test/new,它将查找标签为"test“或标签为"new”的文章。我想以测试的方式修改此代码,以获得带有标签“CakePHP”和标签"new“的文章。

你有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-16 17:59:04

以下是您问题的解决方案:按如下方式更新您的查询-

代码语言:javascript
复制
public function findTagged(Query $query, array $options){
     $this->opt = $options['tags'];
     $articles = $this->find()
        ->select(['Articles.id', 'Articles.url', 'Articles.title', 'Articles.description'])
        ->matching('Tags', function ($query) {
            return $query->where(['Tags.title IN' =>$this->opt]);
        })->group(['Articles.id'])
        ->having([
            $this->Users->query()->newExpr('COUNT(DISTINCT Tags.title) = '.count($this->opt))
        ]);

    return $articles;
}

上面的

查询将只返回文章的matching tags

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42731950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档