如何在codeigniter中搜索多个单词?

时间:2016-01-28 23:59:03

标签: php mysql codeigniter

我有3个表格成分(ingredient_id,名称),菜单(recipe_id,ingredient_id,category_id)和食谱(recipe_id,r_name,r_description)。

ingredient_id名称

1洋葱

2保罗  3辣椒

4油

recipe_id ingredient_id category_id

1 3 1

1 4 1

2 3 1

2 4 1

recipe_id r_name r_description

1 Adob​​o yummy

2 Kaldereta yucky

我想要的是如果我搜索" Pepper,Oil" ,结果应该是与adobo和kaldereta成分相对应的配方。

我尝试了这个但是它只是静态的我希望它是动态的,而且我想爆炸ingredient_name以便我可以搜索多个单词。

  public function get_halal()
{
    $this->db->distinct();
    $this->db->select('*');
    $this->db->from('recipe');
    $this->db->join('menu', 'menu.recipe_id = recipe.recipe_id');
    $this->db->join('ingredient', 'ingredient.ingredient_id = menu.ingredient_id');
    $this->db->where('menu.category_id = 1');
    $this->db->like('ingredient.ingredient_name','Mango', 'both');
    $query = $this->db->get();
    return $query->result();

}

3 个答案:

答案 0 :(得分:1)

如果我明白你想做什么,试试这个。 你需要设置你的$ search_values,你有一个字符串或数组? Supouse你有一个字符串:

//$search_values = "Pepper, Oil";
public function get_halal($search_values)
{
$this->db->distinct();
$this->db->select('*');
$this->db->from('recipe');
$this->db->join('menu', 'menu.recipe_id = recipe.recipe_id');
$this->db->join('ingredient', 'ingredient.ingredient_id = menu.ingredient_id');
$this->db->where('menu.category_id = 1');

if (strpos($search_values, ',') !== false) {
    $search = explode(',' , $search_values);
    $this->db->like('ingredient.ingredient_name', trim($search[0]), 'both');
    unset($search[0]);
        foreach ($search as $term){
            $this->db->or_like('ingredient.ingredient_name', trim($term), 'both');
        }
    }else{
        //this means you only have one value 
        $this->db->like('ingredient.ingredient_name',$search_values, 'both');
    }
    $query = $this->db->get();
    return $query->result();
} 

如果$ search_values是一个数组,你必须直接跳到if条件并执行foreach。

答案 1 :(得分:0)

首先,您必须进行查询,以便找到所搜索的数据

$this->db->select('recipe.r_name');
$this->db->from('recipe');
$this->db->join('menu', 'recipe.recipe_id = menu.recipe_id');
$this->db->join('ingredient' , 'ingredient.ingredient_id = menu.ingredient_id');
$this->db->where('ingredient.ingredient_id' , your search id);
$this->db->get();

See the guide of codeigniter

答案 2 :(得分:0)

$this->db->select('recipe.r_name');
$this->db->from('recipe');
$this->db->join('menu', 'recipe.recipe_id = menu.recipe_id');
$this->db->join('ingredient' , 'ingredient.ingredient_id = menu.ingredient_id');
$this->db->where('ingredient.ingredient_name in (your Search Values));
$this->db->get(); 

试试此代码。这段代码对我来说很好