CodeIgniter-从模型到控制器的访问

时间:2016-11-07 15:22:08

标签: php arrays codeigniter

我在模型中有以下代码:

<?php
class Route_Model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    public function getRoute($date = array())
    {
        try {
            $data = array(
                'route' => array(
                    'id' => 1,
                    'name' => 'budapest-athens',
                    'price' => 150,
                    'id' => 2,
                    'name' => 'rome-madrid',
                    'pret' => 250,
                    'id' => 3,
                    'name' => 'belgrade-bucharest',
                    'price' => 180,
                    'id' => 4
                )
            );
            return $data;

        } catch (Exception $e) {
            return $e->getMessage();
        }
    }

}?>

我想访问控制器中的数组元素。

如何单独访问每个字段?

$price = $this->data['price']

之类的东西

谢谢!

2 个答案:

答案 0 :(得分:2)

如果要从数组price获取$data,则返回一个包含两个级别的数组,只需在控制器中执行此操作:

$data = $this->route_model->getRoute($date);
$price = $data['route']['price']; 

请注意,您的阵列格式不正确,因为您有重复的键,这可能会导致问题

答案 1 :(得分:2)

这个数组永远不会有效,因为你覆盖了键,我想你会想要以下数组:

$data = [
        'route' => [
            [
                'id' => 1,
                'name' => 'budapest-athens',
                'price' => 150
            ], [
                'id' => 2,
                'name' => 'rome-madrid',
                'price' => 250
            ], [
                'id' => 3,
                'name' => 'belgrade-bucharest',
                'price' => 180
            ]
        ]
    ];

接下来,你的try / catch似乎没必要,没有真正的尝试。它是一个硬编码数组,所以除非这实际上会进行一些交互,否则不需要try / catch。

无论如何,要在你的控制器中接收这些数据,你应该这样做:

$this->load->model('Route_model');
$route = $this->Route_model->getRoute();

var_dump($route);
exit;

现在你将拥有这个数组。另一个奇迹,你是否真的试图抓住这个阵列中的所有路线,或者你想用$date参数做些什么?从现在起,除非你删除了一些代码,否则它看起来并没有被使用。