CodeIgniter:通过ActiveRecord结果ID向对象$ result添加$ subresult

时间:2010-11-02 21:44:57

标签: php codeigniter object activerecord

我在向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;

}
?>

我不想使用数组,并且在视图文件上使用这些数据更容易。

2 个答案:

答案 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列,但始终与迭代索引完全匹配。