我在向Codeigniter中的结果添加“子结果”时遇到问题。不确定如何添加到此对象。
$result->{$record_id}->threads = $threads;
应该等于这样的
$result->1->threads = $threads;
但我无法让它工作......我不是OOP的新手,但这是我第一次尝试这样做。
<?php
function get() {
$this->db->select(array(
'record_id', 'record_data', 'record_date',
));
$this->db->from('records');
$sql = $this->db->get();
$records = $sql->result();
foreach($records as $record){
$record_id = $record->record_id;
$this->db->select(array(
'thread_id', 'thread_parent', 'thread_data', 'thread_date',
));
$this->db->from('records_thread');
$this->db->where(array(
'thread_recordid' => $record_id,
));
$sql = $this->db->get();
$threads = $sql->result();
# this is where i'm having issues \/
$records->{$record_id}->threads = $threads;
}
return $records;
}
?>
我不想使用数组,并且在视图文件上使用这些数据更容易。
答案 0 :(得分:3)
我认为你只需要:
$record->threads = $threads;
编辑:
您只需要在foreach中指定引用(请注意&
旁边的$record
):
foreach($records as &$record)
{
//...
$record->threads = $threads;
}
return $records;
答案 1 :(得分:0)
如果rojoca显示的方法不起作用,您可以这样做:
$records = $sql->result_array();
然后像往常一样循环播放(除了$record_id = $record['record_id']
而不是$record->record_id
),并像这样引用你的行:
$records[$record_id]['threads'] = $threads;
虽然您可能不想非常依赖于record_id列,但始终与迭代索引完全匹配。