【问题标题】:How to combine two different tables into one in codeigniter?如何在codeigniter中将两个不同的表合并为一个?
【发布时间】:2019-01-25 06:55:03
【问题描述】:

在这段代码中,我有两个不同的表,即skill_master and jobs_category。现在,我想将这两个不同的表数据合二为一,并使用json_encode 将其数据转换为 JSON 格式。

$this->db->select('category');
$this->db->from('jobs_category');
$this->db->order_by('category');
$query1 = $this->db->get();
$result1 = $query1->result_array();

$this->db->select('key_skills');
$this->db->from('skill_master');
$this->db->order_by('key_skills');
$query2 = $this->db->get();
$result2 =$query2->result_array();

$arr = array();

foreach($result1 as $row)
{
    foreach($result2 as $rows)
    {
        $arr[] = $row['category'].','.$rows['skill_master'];
    }
}

$json = json_encode($arr); 
echo $json;

例如:

table1:技能大师

key_skills
==========
java
php
dot net

table2:jobs_category

category
========
IT Jobs
Air line Jobs
Hardware Jobs

现在,我这里有两张桌子。现在,我想合并这两个表,并希望得到 JSON 格式的数据,例如 ["java", "PHP", "dot net", "IT Jobs", "Air Line Jobs", "Hardware Jobs"]。那么,我该怎么做呢?请帮帮我。

谢谢

【问题讨论】:

  • 这两个表有没有关系?
  • 没有关系@DanishAli

标签: arrays json codeigniter mysqli


【解决方案1】:
$this->db->select('category');
$this->db->from('jobs_category');
$this->db->order_by('category');
$query_category= $this->db->get();
$result_category = $query_category->result_array();

$this->db->select('key_skills');
$this->db->from('skill_master');
$this->db->order_by('key_skills');
$query_skills = $this->db->get();
$result_skills =$query_skills->result_array();

如果您像这样从表 jobs_category 和 Skill_master 中获取记录

 $result_category = 
      [
        '0' => ['category' => 'IT Jobs'], 
        '1' => ['category' => 'Air line Jobs'],
        '2' => ['category' => 'Hardware Jobs']
      ];
   $result_skills = 
      [
       '0' => ['skill_master' => 'java'], 
       '1' => ['skill_master' => 'php'],
       '2' => ['skill_master' => 'dot net']
      ];


  $final_arr = $final_category_arr = $final_skill_arr = [];

  foreach($result_category as $category_row)
  {
    $final_category_arr[] = $category_row['category'];
  }

  foreach($result_skills as $skill_row)
  {
   $final_skill_arr[] = $skill_row['skill_master'];
  }

  $final_arr = array_merge($final_category_arr, $final_skill_arr);

 $json = json_encode($final_arr); 
 echo $json;

结果会是这样的

["IT Jobs","Air line Jobs","Hardware Jobs","java","php","dot net"]

【讨论】:

    【解决方案2】:

    在获取和合并数据时重命名列应该可以工作。试试下面的代码

                $this->db->select('category');
                $this->db->from('jobs_category');
                $this->db->order_by('category');
                $query_category= $this->db->get();
                $result_category = $query_category->result_array();
    
                $this->db->select('key_skills as category');
                $this->db->from('skill_master');
                $this->db->order_by('key_skills');
                $query_skills = $this->db->get();
                $result_skills =$query_skills->result_array();
    
                $result = array_merge($result_category,$result_skills);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多