首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >规则order by match against多表

规则order by match against多表
EN

Stack Overflow用户
提问于 2017-01-30 16:43:41
回答 1查看 486关注 0票数 0

你知道如何在ORDER BY中添加分数和规则查询构建器吗?下面的查询抛出一个Expected end of string, got '+'错误。

代码语言:javascript
复制
$qb = $this->createQueryBuilder('i')
            ->select(
                'partial i.{ '.$fields.' }',
                'partial c.{ id, title, description }',
                'partial c2.{ id }',
                'partial ch.{ id, name, icon, description }',
                'partial t.{ id, tagname }',
                "MATCH($searchFields) AGAINST(:searchTerm BOOLEAN) as score1",
                'MATCH(t.tagname) AGAINST(:searchTerm BOOLEAN) as score2'
            )
            ->join('i.categories', 'c')
            ->leftJoin('c.parent', 'c2')
            ->leftJoin('i.tags', 't')
            ->join('i.status', 's')
            ->join('c.channel', 'ch')
            ->join('ch.company', 'co')
            ->where("(MATCH($searchFields) AGAINST(:searchTerm BOOLEAN) > 5 OR MATCH(t.tagname) AGAINST(:searchTerm BOOLEAN) > 5 )")
            ->setParameters([
                'searchTerm' => $searchTerm.'*',
            ])
            ->orderBy('score1 + score2', 'DESC');
EN

回答 1

Stack Overflow用户

发布于 2017-01-30 16:52:27

不要紧,我只是简单地把字段加在一起就解决了。多伊尔。

代码语言:javascript
复制
 $qb = $this->createQueryBuilder('i')
            ->select(
                'partial i.{ '.$fields.' }',
                'partial c.{ id, title, description }',
                'partial c2.{ id }',
                'partial ch.{ id, name, icon, description }',
                'partial t.{ id, tagname }',
                "(MATCH($searchFields) AGAINST(:searchTerm BOOLEAN) + MATCH(t.tagname) AGAINST(:searchTerm BOOLEAN)) as score"
            )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41931756

复制
相关文章

相似问题

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