Codeigniter从模型到控制器传递数组

时间:2014-08-12 08:58:55

标签: php arrays codeigniter

我试图从模型向控制器发送数据数组但是当我在控制器上回显时,我只看到第一个值没有值的所有数组。怎么了?

型号:

        $sql = "
        SELECT car_id
        FROM cars
        WHERE price= 1";

        $res = mysql_query($sql);

        $bought_cars= array();
        while ($row_ya = mysql_fetch_object($res)) 
        {
            $bought_cars[] = $row_ya->car_id;
        }
        foreach ($bought_cars as $bought_car) 
        {
                return $bought_car;
        }

控制器

$bought_car = $this->car_model->car();

echo($bought_car);

提前谢谢你!

5 个答案:

答案 0 :(得分:2)

您必须使用Codeigniter的Active Record Query。 在模型中(推荐):

$this->db->select('car_id');
$this->db->from('cars');
$this->db->where('price',1);
$query=$this->db->get();
return $query->result();

在没有活动记录的情况下更新(不推荐):

$sql = "
        SELECT car_id
        FROM cars
        WHERE price= 1";

        $res = mysql_query($sql);

        $bought_cars= array();
        while ($row_ya = mysql_fetch_object($res)) 
        {
            $bought_cars[] = $row_ya->car_id;
        }
        return $bought_cars;//no need to run foreach, you just have to return the array after completing your push operation.

答案 1 :(得分:0)

它以第一个循环结束,返回它得到的第一个值,这就是为什么你在控制器上回显时获得第一个值.Rather这样做返回一个完整的数组。

while ($row_ya = mysql_fetch_object($res)) 
    {
        $bought_cars[] = $row_ya->car_id;
    }
return $bought_cars;

答案 2 :(得分:0)

你也可以这样使用: -

$sql = "SELECT car_id FROM cars WHERE price= 1";
$query = $this->db->query($sql);
return $query->result();

答案 3 :(得分:0)

您在模型中使用return,这导致循环/函数结束并仅返回数组中的第一个值。只需完全删除foreach循环,只需在模型中返回$bought_cars即可。

为了在控制器中显示数组的所有值,您必须遍历它。

foreach($bought_car as $car) {
    echo $car . '<br>';
}

或者,如果您想让它更具可读性,您可以使用:

<pre><?php print_r($bought_car); ?></pre>

答案 4 :(得分:0)

您可以使用有效记录来实现此目的:

模型

    $this->db-select('car_id')
    $this->db->where('price', 1);               
    $query = $this->db->get('cars'); if($query->num_rows() > 0){
         foreach ($query->result() as $row)
         {
            $data[] = $row;
         }
        return $data;
    }

控制器

    $bought_car = $this->car_model->car(); foreach($bought_car as $car) { echo $car->car_id

}

请记住,您只选择了car_id,这是唯一可用于回显的列