我有一个模型,我在运行查询并从我的数据库中选择表字段,在控制器中收到此查询的结果。我试图从这个结果中提取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; ?>
答案 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"]));
}