我有这段代码:
function search($terms){
$query = $this->db->get_where('products',"name LIKE '%$terms%' OR description LIKE '%$terms%'");
$product = $query->result_array();
foreach($product as $p):
$query2 = $this->db->get_where('categories', array('cat_id' => $p['prod_category']));
$category = $query2->row_array();
$product['category'] = $category['cat_link'];
endforeach;
return $product;
}
在我的搜索功能中。它会返回类似的内容:
Array(
[0] => Array(
[prod_id] => 5
[prod_name] => Product
[prod_category] => 1
)
但我所追求的是:
Array(
[0] => Array(
[prod_id] => 5
[prod_name] => Product
[prod_category] => Category1
)
来自我的类别名称,ID为1.这是在我的“类别”表中。 foreach循环不是完成此任务的正确方法,但是什么是?
答案 0 :(得分:1)
您可以使用以下方法:
我假设您已经加载了库
<强> CONTROLLER 强>
function search()
{
$data['query'] = $this->Books_model->get_search();
$this->load->view(‘books’, $data);
}
<强> MODEL 强>
function get_search()
{
$match = $this->input->post(‘search’);
$this->db->like(‘bookname’,$match);
$this->db->or_like(‘author’,$match);
$this->db->or_like(‘characters’,$match);
$this->db->or_like(‘synopsis’,$match);
$query = $this->db->get(‘books’);
return $query->result();
}
<强>视图强>
<?=form_open(‘books/search’);?>
<?php $search = array(‘name’=>’search’,'id’=>’search’,'value’=>”,);?>
<?=form_input($search);?><input type=submit value=’Search’ /></p>
<?=form_close();?>
可以使用HTML表格显示结果
<table>
<tr><th>ID</th><th>Book</th><th>Author</th><th>Published</th><th>Price</th></tr>
<?php foreach($query as $item):?>
<tr>
<td><?= $item->id ?></td>
<td><?= $item->bookname ?></td>
<td><?= $item->author ?></td>
<td><?= $item->datepublished ?></td>
<td><?= $item->price ?></td>
</tr>
<?php endforeach;?>
</table>
这就是我正在使用的内容,我希望它能帮助您在Code Igniter上进行搜索功能。
答案 1 :(得分:1)
您可以通过让数据库处理表的连接来简化搜索逻辑。
function search($terms){
$this->db->select('prod_id, prod_name, cat_name');
$this->db->from('products');
$this->db->join('categories', 'cat_id = prod_category', 'inner');
$this->db->like('name', $terms);
$this->db->or_like('description', $terms);
$query = $this->db->get();
return $query->result_array();
}
这是假设您的类别名称列名为cat_name
。结果如下:
Array(
[0] => Array(
[prod_id] => 5
[prod_name] => Product
[cat_name] => Category1
)
希望这有帮助!