【问题标题】:Pass parameter dynamically to the model and display the result in view将参数动态传递给模型并在视图中显示结果
【发布时间】:2021-08-15 09:51:12
【问题描述】:

我正在使用 foreach 将动态参数传递给模型以检索数据。我试图在视图中显示结果并得到一些错误。请建议是否有针对这种情况的更好方法。

控制器:

$part_ids = $this->COC_model->getDesignParts($batch,$sr_no);
$parts_activities = [];
        foreach ($part_ids as $current_part_id) {
            $parts_activities['part_activities'] = ['part_id' => $current_part_id->id,
            'activities' =>$this->COC_model->getActivities($batch,$sr_no,$current_part_id->id),
            'row'=>$this->VDIR_model->get_batch_details($batch,$sr_no,$current_part_id->id)];
        }
$this->load->view('QC/COC',$parts_activities);

型号:

function getDesignParts($batch,$sr_no){
        $query = $this->db->query("SELECT 
        id,part_name,part_no 
        FROM 
            design
        WHERE 
            batch_id='$batch' AND
            sr_no='$sr_no'");
        return $query->result();            
    }
function getActivities($batch,$sr_no,$part_id){
        $query=$this->db->query("select activities,pi_activities.id as char_activity_id,specification_from,specification_to 
        from pi_activities 
        where batch='$batch' and sr_no='$sr_no' and part_id='$part_id'");
        return $query->result();             
    }  
function get_batch_details($batch,$sr_no,$part_id){
        $query=$this->db->query("select id,test_field 
        from test 
        where batch='$batch' and sr_no='$sr_no' and part_id='$part_id'");
        return $query->row();             
    }  

查看:

foreach ($part_activities as $getActivity): 
echo $getActivity['part_id'];
?>
<table class="table-bordered table-responsive  table">
<tr class="set-width1">                                            
<?php foreach ($getActivity['activities'] as $key => $activity) {?>
<td><?= $activity->activities;?></td>                                                    
<?php }?> 
</tr>
</table>
<?php endforeach;?>

错误:

Message: Illegal string offset 'part_id'

Message: Invalid argument supplied for foreach()

【问题讨论】:

  • 你为什么不加入这个表?
  • 我想根据传递的 part_id 创建多个表。这就是我在 foreach 中添加表格的原因。

标签: php arrays codeigniter


【解决方案1】:

我不知道你为什么会出错,但你应该加入表而不是创建新表。 正确代码:

<table class="table-bordered table-responsive table">

  <tr class="set-width1">

    <?php foreach ($getActivity['activities'] as $key => $activity) { ?>

      <td><?php echo $activity->activities; ?></td>

    <?php } ?>
    
  </tr>

【讨论】:

    【解决方案2】:

    推送到数组的日期不正确 应该是

     $part_ids = $this->COC_model->getDesignParts($batch,$sr_no);
    $parts_activities = [];
            foreach ($part_ids as $current_part_id) {
                $parts_activities['part_activities'][] = ['part_id' => $current_part_id->id,
                'activities' =>$this->COC_model->getActivities($batch,$sr_no,$current_part_id->id)];
            }
    $this->load->view('QC/COC',$parts_activities);
    

    【讨论】:

    • 谢谢。您能否也请回答如何访问视图中 foreach 中新添加的“行”中的字段?仅供参考,get_batch_details 函数返回 return $query->row();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多