1

我有这个代码:

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 循环不是完成此任务的正确方法,但它是什么?

4

2 回答 2

1

您可以使用以下方法:

我假设您已经加载了库

控制器

function search()
{
$data['query'] = $this->Books_model->get_search();
$this->load->view(‘books’, $data);
}

模型

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 上进行搜索功能。

于 2012-11-12T11:00:07.360 回答
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
)

希望这可以帮助!

于 2012-11-12T12:58:05.890 回答