2017-03-31 43 views
1

我想显示来自table_one的数据,其中tableone_id包含在table_two..which是一对多关系..这里是例子。
SQL Server的PHP代码点火器显示一对多的关系

table_one    table_two 
id | name    id | name |tableone_id 
1 | A    1 | C |  1 
2 | B    2 | D |  1 
         3 | E |  2 
         4 | F |  2 

结果我期待我的PHP是..

Number | Name | Linked Item | 
    1  | A | C  | 
     |  | D  | 
    2  | B | E  | 
     |  | F  | 

我已经尝试过类似

**Controller.php** 
$head = $this->db->query("SELECT * from table_one)->result_array(); 

foreach($head as $key => $value) 
{ 
    $head[$key]['items'] = $this->db->query("SELECT 
    a.id, 
    b.id, 
    b.name as tabletwo_name, 
    FROM table_one a 
    JOIN table_two b on a.id = b.id 
    where b.id =".$value['id'])->result_array(); 
} 

的代码,我做了一些代码,fails.how我怎么办那种情况下的正确代码?
谢谢

+0

转到了文档的好友,你真的误解了sql。 – kishor10d

回答

0
  1. 你的数据库查询应该是在模型中,而不是在控制器
  2. 你缺少双引号中的第一选择,您的字符串不是封闭
  3. 你为什么要选择所有结果从table_one,然后做JOINed选择?你甚至没有选择你想要的输出数据(比如table_two.name)。

更改你的第一个查询:

$this->db->query("SELECT table_one.id as number, table_one.name as name, table_two.name as linked_item FROM table_one LEFT JOIN table_two ON table_one.id = table_two.tableone_id")->result_array(); 

,然后就这样做:

foreach($head as $key => $value) 
{ 
    $head[$key]['items'] = $value; 
} 
0

试试这个,嗯我没有测试这一点,但你可以

$this->db->select('table_one.name AS t1,table_two.name AS t2'); 
      $this->db->join('table_two', 'table_two.tableone_id=table_one.id'); 
      $rs = $this->db->get('table_one'); 

      $count = 1; 
      $data = array(); 
      foreach ($rs->result() as $key => $value) 
      { 
        $data[] = array(
         'number'  => $count ++, 
         'name'  => $value['t1'], 
         'linked_item' => $value['t2'] 
        ); 
      } 

      print_r($data); 
0

控制器用于在模块和代码工视图之间进行通信。所以你的数据库查询应该在模型中。

做样板根据您的查询,也许你可以尝试这样的:

function something(){ 

    $qry = 'a.* , b.tableone_id'; 

    $this->db->select($qry); 
    $this->db->from('table_one as a'); 
    $this->db->join('table_two b', 'b.tableone_id = a.id', 'left'); 

    $q = $this->db->get(); 
    return $q; 

} 

尝试以下链接也为在CI数据库查阅更多参考: https://www.codeigniter.com/userguide3/database/query_builder.html