CodeIgniter,如何从模型返回多个查询到控制器?

时间:2015-04-29 12:40:05

标签: php mysql codeigniter

我正在尝试让我的模型返回两个查询,一个用于数据本身,这是来自“类别”表的多个记录,另一个是计数字段,来自“帖子”表。

我已经尝试了很多可能的解决方案,但到目前为止还没有为我修复它。

我的观点确实适用于正确的路线/论坛/ $ ID,但加载类别和每个类别的帖子数不起作用。

分类控制器:

$this->load->database();
$this->load->model("Categories_model");

$results=$this->Categories_model->getCategories();

$data=array('results'=>$results);

$this->load->view('Categories_view',$results);

分类模型:

// this works if I only want to get all the categories  
// $query=$this->db->get('Categories');
// return $query->result();

$query1 = $this->db->get('Categories');
$query2 = $this->db->query("SELECT COUNT(*) AS rowCount FROM Posts");

$return array('categories' => $query1, 'count' => $query2);

分类视图:

<tbody>
    <?php foreach ($results['categories'] as $r):?>
        <tr>
            <td><a href="<?php echo site_url('forum'); ?>/<?=$r->CategorieId?>"><?=$r->Name?></a></td>
            <td><?=$r->rowCount?></td>
        </tr>
    <?php endforeach;?> 
</tbody>

当我加载Categories视图时,我收到此错误:

  

语法错误,意外'数组'(T_ARRAY),文件名:models / Categories_model.php

有人可以帮我提供一些关于如何执行此操作的示例代码,或修复我当前的代码吗?

提前谢谢!

3 个答案:

答案 0 :(得分:3)

在您的代码中返回错误从您的返回类型中删除$

$return array('categories' => $query1, 'count' => $query2);

应该是

return array('categories' => $query1, 'count' => $query2);

答案 1 :(得分:0)

$query['categories'] = $this->db->get('Categories')->result_array();
$query['count']  = $this->db->query("SELECT COUNT(*) AS rowCount FROM Posts")->result();

return $query;

试试这个。没做什么好事。刚刚使用了result_array()和result()。我希望它们与您的CI版本兼容!!

答案 2 :(得分:0)

运行事务:
要使用事务运行查询,您将使用$ this-&gt; db-&gt; trans_start()和$ this-&gt; db-&gt; trans_complete()函数,如下所示: / p>

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete();

您可以在启动/完成功能之间运行任意数量的查询,并且可以根据任何给定查询的成功或失败提交或回滚它们。 Click here to see more