从控制器中的查询结果中获取值

时间:2017-09-27 15:54:35

标签: php mysql codeigniter

我有一个模型,我在运行查询并从我的数据库中选择表字段,在控制器中收到此查询的结果。我试图从这个结果中提取type_id,它是一个id并将它传递给同一个模型中的另一个函数,这个函数比从这个type_id中选择数据库表中的图像路径。但我收到一个错误“试图获得非对象的属性”。

模型

class Interior_listing_model extends CI_model
{
    public function interior_list()
  {
    //$query = $this->db->get('interior_testing');
    $query['resulty'] = $this->db->get_where('interior_testing', array('category_id' => 1),0,0);
    return $query['resulty']->result_array();

  }
public function image_list($type_id)
  {
$query1 = $this->db->get_where('interior_image_testing', array('type_id' => $type_id),3,0);
   return $query1->get()->row();
}

}

控制器

public function index()
    {   
        $this->load->model("Interior_listing_model","interior");
        $data['articles']  = $this->interior->interior_list();
        $data['particles'] = $this->interior->image_list($data['articles']->type_id);
        // Load Interior Listing View
        $this->load->view("interior/interior",$data);
    }

在$ data ['articles']的控制器中 - > type_id我收到错误,如上所述。

查看

     <?php foreach($articles as $article): ?>
      span class="text-center"><?= $article->type ?></span><br/>
     <?php foreach ($particles as $particle): 
                    ?>
                  <div class="col-lg-4 col-md-4 col-sm-4 col-6 workimg">
                    <img src="assets/img/<?= $particle->image_path ?> " width="100%"> <!-- needs to be changed -->
                  </div> 
 <?php endforeach; ?>
 <?php endforeach; ?> 

2 个答案:

答案 0 :(得分:1)

至少需要进行两项更改。

在您的模型更改中

return $query['resulty']->result_array();

return $query['resulty']->result();

result()返回一个对象数组,其中每个对象都是查询中的一行。

因为$data['articles']是一个对象数组,所以你需要引用数组中要使用的项目。

更改

$data['particles'] = $this->interior->image_list($data['articles']->type_id);

$data['particles'] = $this->interior->image_list($data['articles'][0]->type_id);

这将仅使用模型结果的第一行。我怀疑这不会实现你想要的一切。但它应该可以阻止错误。

答案 1 :(得分:0)

&#34;返回&#34; interior_list()上的语句返回一个数组:

return $query['resulty']->result_array(); 

result_array()是一个CI函数,它返回一个行数组,其中每一行都是结果中的一条记录。

所以你试图访问一个名为type_id的对象属性,但是你正在处理一个数组,而不是一个对象。

由于$ data [&#39;文章&#39;]中可能包含两行或更多行,因此您需要弄清楚预期结果是什么。

例如,也许你正在寻找这样的东西:

$data['articles'] = $this->interior->interior_list();
foreach($data['articles'] as $idx => $article)
{
  $data['particles'] = array_merge($data['particles'], $this->interior->image_list($article["type_id"]));
}