与CodeIgniter查询生成器的FULLTEXT索引匹配问题

问题描述 投票:1回答:1

我正在尝试基于CodeIgniter查询构建器创建全文搜索索引,我得到了奇怪的结果,据说:

Error Number: 1191</p><p>Can't find FULLTEXT index matching the column list</p><p>SELECT *
FROM `posts`
LEFT JOIN `post_reg_sub_cat` ON `post_reg_sub_cat`.`id`=`posts`.`regional`
LEFT JOIN `post_reg_cat` ON `post_reg_cat`.`id_reg_cat`=`post_reg_sub_cat`.`id_reg_cat`
WHERE `id_post` != '129'
AND `post_reg_cat`.`reg_cat` = 'lampung'
AND MATCH (title) AGAINST("saya-punya-3-pertanyaan-untuk-brigita-manohara")
 LIMIT 5</p><p>Filename: models/M_api.php</p><p>Line Number: 347

但是,我做了一些研究,在phpMyAdmin Web客户端中手动运行此查询,所以我只是复制完整的查询代码,结果正常。

这是我的模特

function getRegRelasilNews($id, $slug, $limit) {
        $ur = base_url();
        $parse = parse_url($ur);
        $host = explode('.', $parse['host']);

        $subdomain = $host[0];

        $this->db->select('*');
        $this->db->join('post_reg_sub_cat', 'post_reg_sub_cat.id=posts.regional','left');
        $this->db->join('post_reg_cat', 'post_reg_cat.id_reg_cat=post_reg_sub_cat.id_reg_cat','left');
        $this->db->where('id_post !=', $id);
        $this->db->where('post_reg_cat.reg_cat', $subdomain);
        $this->db->where('MATCH (title) AGAINST("'.$slug.'")' , NULl);
        $this->db->limit($limit);
        return $this->db->get($this->table)->result();
    }

这里发生了什么?

php mysql codeigniter-3
1个回答
1
投票

它应该这样做

Fist确保您已在Phpmyadmin中为FULLTEXT索引添加了列标题,或者您可以使用下面的查询

ALTER TABLE `Table_name` ADD FULLTEXT (`title`)

然后在选择第一个表语法之后对查询进行一些更改应该是这样的

 $this->db->from('first_table_name');

然后在匹配的地方反对应该像下面一样使用

$this->db->where('MATCH (table_name.title) AGAINST("'.$slug.'")');

为每个列使用table_name.column名称,因为您正在使用连接,如果其他表中存在相同的名称列,则会发生崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.