gpt4 book ai didi

php - CodeIgniter:如何根据第一个查询结果正确运行两个查询?

转载 作者:行者123 更新时间:2023-11-29 13:23:50 27 4
gpt4 key购买 nike

我正在查询数据库中的结果(所有结果都正确显示),然后在运行 foreach 语句时,我尝试在另一个表中查找匹配的 ID 以收集覆盖价格,该价格将取代“storeprice”列在第一个结果中。

这是我的模型:

public function fetch_products($limit, $start, $manuid) {
$this->db->order_by('productname', 'ASC');
$this->db->limit($limit, $start);

$query = $this->db->get_where('products', array('manuid' => $manuid, 'active' => 1));
if($query->num_rows() > 0){
foreach($query->result() as $row){
$data[] = $row;
$pid = $row->id;
// Check for Price Override
$squery = $this->db->get_where('price_override', array('id' => $pid));
if($squery->num_rows() > 0){
$result = $squery->row();
$override = $result->storeprice;
$data['override'] = $override;
} else {
$override = 0;
$data['override'] = $override;
}
}
return $data;
}
return false;
}

$data['override'] 是导致我出错的原因。准确地说,以下错误:

Message: Undefined property: stdClass::$override

在 Controller 中我使用以下内容:

$data['results'] = $this->store_products_model->fetch_products($config["per_page"], $page, $manuid);

最后,在 View 中,我调用表内的结果来显示。除覆盖之外的所有内容都将显示:

foreach ($results as $product){
echo '<tr>';
echo '<td>' . $product->productname . '</td>';
if($product->override != 0){
echo '<td>$' . $product->override . '</td>';
} else {
echo '<td>$' . $product->storeprice . '</td>';
}
echo '<td>$' . $product->saleprice . '</td>';
echo '<td>' . $product->storepoints . '</td>';
echo '<td><a href="store_modify_product/' . $product->id . '">Edit</a>';
echo '</tr>';
}

有人知道我在这里可能做错了什么而给我以下错误吗?

Message: Undefined property: stdClass::$override

最佳答案

行是一个对象,而不是数组。尝试:

$data->override = $override

编辑:

好吧,实际上,$data是一个数组,但是你向其中插入一个对象,所以它会是

$last_index = sizeof($data) - 1;
$data[$last_index]->override = $override;

关于php - CodeIgniter:如何根据第一个查询结果正确运行两个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20404506/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com