我有3个表,成分(成分ID,名称),菜单(食谱ID,成分ID,类别ID)和食谱(食谱ID,R_NAME,R_描述)。
1个洋葱
2 保罗
3 辣椒
4 油
1 3 1
1 4 1
2 3 1
2 4 1
1 阿多波好吃
2 Kaldereta 恶心
我想要的是,如果我搜索“Pepper, Oil”,结果应该是与 adobo 和 kaldereta 成分相对应的食谱。
我尝试过这个,但它只是静态的,我希望它是动态的,而且我想分解成分名称,以便我可以搜索多个单词。
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();
}
如果我明白你想做什么,请尝试一下。 您需要设置 $search_values,您有一个字符串还是一个数组? 假设你有一个字符串:
//$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。
首先您必须进行查询,以便您可以找到您搜索的选定数据
$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();
$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();
尝试这个代码。这个代码对我来说工作得很好