【问题标题】:Accessing array of data inside the controller from the model从模型访问控制器内的数据数组
【发布时间】:2017-05-08 03:39:36
【问题描述】:

我想使用$data['main'] 并从中获取特定的行或数据:extra_id

我会将extra_id 用于另一个功能。

我尝试从$data['main'] 访问数据,就像我在另一个页面的视图中所做的那样:$extra_id = $main->result()->extra_id;

不幸的是,它没有用。

控制器:

public function viewData($id)
    {   

    $this->load->model('myModel');

    $data['main'] = $this->MyModel->getMainData($id);

    $extra_id = $main->result()->extra_id; //error here. undefined variable main.

    $data['extra'] = $this->MyModel->getExtraData($extra_id);



    $this->load->view('view',$data);
}

型号:

public function getMainData($id) {
        $this->db->select('main.id as extra_id');
        $this->db->select('main.*');
        $this->db->select('extra.*');

        $this->db->from('main');

        $this->db->join('extra', 'extra.main_id = main.id');

        $query = $this->db->get();  
        return $query;
}

【问题讨论】:

  • 最好$data['main']->result()->extra_id;
  • @JustOnUnderMillions 好的。我尝试过这个。它产生了另一个错误,即Trying to get property of non-object
  • 如果您有多个结果,则错误是正确的。 var_dump() 看看你得到了什么。
  • 另请阅读此处stackoverflow.com/questions/8541291/… 并使用result_array(),如示例中所示
  • 请了解如何访问任何类型的 $variables arrays,objects,...。看起来一切都很好,但你现在不知道如何访问你可以看到的东西。但这是你必须学习的基本 PHP 语法。

标签: php codeigniter


【解决方案1】:

使用此代码。

$extra_id = $data['main']->result()[0]->extra_id;

并且在模型的 where 子句中使用 $id。

 $this->db->where("id",$id);

【讨论】:

    【解决方案2】:

    你试过这样吗……

    在 codeiginter 中,result() 在对象形式中提取多行,而函数 row() 仅用于获取对象形式中的第一行。

    控制器:

    public function viewData($id)
        {   
    
        $this->load->model('myModel');
    
        $data['main'] = $this->MyModel->getMainData($id);
    
        $extra_id = $data['main']->extra_id; //error here. undefined variable main.
    
        $data['extra'] = $this->MyModel->getExtraData($extra_id);
    
    
        $this->load->view('view',$data);
    }
    

    型号:

    public function getMainData($id) {
            $this->db->select('main.id as extra_id');
            $this->db->select('main.*');
            $this->db->select('extra.*');
    
            $this->db->from('main');
    
            $this->db->join('extra', 'extra.main_id = main.id');
    
            $query = $this->db->get()->row();  
            return $query;
    }
    

    【讨论】:

      【解决方案3】:

      你初始化$data['main'],然后使用$main....这样不行。试试这个:

      $extra_id = $data['main']->result()->extra_id;
      

      我的猜测是你复制那段代码的地方,你在那个方法中将它分配给一个名为 $main 的变量。

      【讨论】:

      • 好的。我尝试过这个。它产生了另一个错误,即Trying to get property of non-object
      • 那么您的$this->MyModel->getMainData($id); 没有正确返回它。使用var_dump() 调试并找出您实际输出的内容。
      • 我已经编辑了问题并添加了模型部分。
      猜你喜欢
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多