我正在为我的书店项目创建一个CodeIgniter搜索。单个单词搜索是可以的,但是当我搜索多个单词时却遇到了问题。我该如何解决这个问题。
我的控制器
public function search()
{
/*=== LOAD DYNAMIC CATAGORY ===*/
$this->load->model('admin_model');
$view['category'] = $this->admin_model->get_category();
/*==============================*/
$this->form_validation->set_rules('search_book', "Search",'required');
if($this->form_validation->run() == FALSE)
{
#...Redirected same page after action
redirect($_SERVER['HTTP_REFERER']);
}
else
{
$query = $this->input->post('search_book');
$this->load->model('user_model');
$view['books'] = $this->user_model->search($query);
$view['user_view'] = "users/search_books";
$this->load->view('layouts/user_layout', $view);
}
}
我的模型
public function search($query)
{
$this->db->order_by('id', 'DESC');
$this->db->from('books');
$this->db->like('book_name', $query);
$this->db->where('status', 1);
$q = $this->db->get();
return $q->result();
}
就像我在搜索框中编写 PHP 一样,它带给我所有标题为PHP的书。对我来说还可以。
但是当我在搜索框中编写 PHP BOOKS 时,显示没有找到书。
我希望它显示任何单词匹配的结果。
答案 0 :(得分:2)
您可以替换
$this->db->like('book_name', $query);
条件为
$str = str_replace(" ","|", $query);
$this->db->where("book_name rlike '$str'");
您可以获得有关rlike here的更多详细信息。
这里提供了更好的full text search帮助,供您参考。