【问题标题】:Displaying Data from a Join in Codeigniter在 Codeigniter 中显示来自联接的数据
【发布时间】:2011-01-15 20:43:24
【问题描述】:

我正在使用简单的联接从两个数据库中提取数据。这是模型中的连接:

function com_control(){
    $this->db->select('*');
    $this->db->from('comments');
    $this->db->join('posts', 'comments.entry_id = posts.id');
    $query = $this->db->get();
    return $query->result;
}

我想要的显示方法是在表格中,所以我开始这样使用:

foreach($comm_control as $row){

   $this->table->add_row(
   $row->entry_id,
   $row->comments.id,
   $row->comment,
   $row->title             
   );      
}//end of foreach

我的问题是 cmets.id 中的数据显示。 将 comment.id 添加到表格行中的正确格式是什么?我需要两个表中的 ID 以便在表中进一步显示、编辑和删除。我此时得到的“comment.id”唯一显示是单词 id。

任何帮助将不胜感激。

【问题讨论】:

  • 您的意思是要以不同于“id”的方式显示列标题?

标签: php codeigniter join


【解决方案1】:

好的,我想你需要做的是为 cmets 表中的 id 字段设置一个别名:

function com_control() {
    $this->db->select('entry_id, comments.id AS comment_id, comment, title');
    $this->db->from('comments');
    $this->db->join('posts', 'comments.entry_id = posts.id');
    $query = $this->db->get();

    return $query->result;
}

然后您可以将 cmets.id 字段简单地引用为 $row->comment_id:

$this->table->set_heading('Entry ID', 'Comment ID', 'Comment', 'Title');

foreach ($comm_control as $row ) {
    $this->table->add_row(
        $row->entry_id,
        $row->comment_id,
        $row->comment,
        $row->title             
    );      
}

echo $this->table->generate();

实际上,如果列 'id' 对于 cmets 表是唯一的,那么您可以使用 $row->id;当您连接具有相同列的表时会出现问题;它变得模棱两可,计算机将不知道您在引用什么。

【讨论】:

  • 啊问题不在于标题,问题是当我检索数据时,“$row->cmets.id”列中的数据只输出“ID”这个词。所以基本上我在问 $row->cmets.id 在这种情况下是否合适。我想我会在数据库调用中更具体地定义我想要的数据
  • 我通过重命名数据库的重复字段解决了我的问题。谢谢大家
  • 太棒了!我只是改变了我的答案,如果没有 db 改变,实际上可以解决这个问题 lol
  • Well In 仍然想知道显示模糊数据的正确方法是什么。可以在添加行数组中完成吗?显然我的方式是错误的
  • 我检查了文档并花了一点时间修改它,我很确定唯一的方法是在 SELECT 中使用别名。所以我要称之为“正确”的方式!
猜你喜欢
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多