如何做codeigniter子查询

时间:2015-05-12 11:35:12

标签: php codeigniter subquery

如何在codeignitor中执行此类过程

<ul>
    <?php
    $quer1 = "SELECT id FROM table1"; //conside as query examle
    foreach ($quer1 as $value1) {
        ?>
        <li>
            <?php echo $value1['id']; ?>

            <ul>
                <?php
                $quer2 = "SELECT name FROM table2 WHERE id = $value1['id']";
                foreach ($quer2 as $value2) {
                    ?>
                <li><?php echo $value2['name']; ?></li>
                  <?php  
                }

                ?>
            </ul>
        </li>
        <?php  
    }
    ?>
</ul>

这种方法在执行普通的php时没问题,因为我们可以从视图中查询和获取数据,但是如何才能使用此控制器来查看

2 个答案:

答案 0 :(得分:0)

   $this->db->select('id');
   $this->db->from('myTable');
   $row = $this->db->get()->row();
   echo $row['id'];
   $this->db->get_where('table2',array('id'=>$row['id']));

我希望这可以帮助您了解活动记录的工作原理,如果您想在没有活动记录的情况下执行此操作,请使用以下

  $query = "SELECT id from myTable";
   $this->db->query($query);

此致

答案 1 :(得分:0)

<强>假设:

`table1`

id  |  name
----+-------
1   |  abc
2   |  pqr
3   |  xyz

`table2` (assuming `table_id` is PK and not `id`)

table_id |  id  |  name
---------+------+-------
   1     |   1  | hello1
   2     |   1  | hello1
   3     |   2  | hello2
   4     |   3  | hello3


型号:

public function get_ul_li()
{
    $this->db->select('table1.id, table2.name');
    $this->db->from('table1');
    $this->db->join('table2', 'table1.id = table2.id');
    $query = $this->db->get();
    return $query->result_array();
}

<强>控制器:

public function xyz()
{
    $ul_li = $this->xyz_model->get_ul_li();
    $arr = array();
    foreach($ul_li as $u)
    {
        if(array_key_exists($u['id'], $arr))
        {
            $arr[$u['id']] = array();
            array_push($u['name'], $arr[$u['id']]);
        }
        else
        {
            array_push($u['name'], $arr[$u['id']]);
        }
    }

    $this->load->view('xyz.php', array('ul_li' => $arr));
}

查看:

<ul>
    <?php foreach($ul_li as $key => $val) { ?>
    <li>
        <?php echo $key; ?>

        <ul>
             <?php foreach($val as $v) { ?>
             <li> <?php echo $v; ?> </li>
             <?php } ?>
        </ul>
    </li>
    <?php } ?>
</ul>