【问题标题】:MySQL JOIN tables in CodeigniterCodeigniter 中的 MySQL JOIN 表
【发布时间】:2014-02-20 21:49:29
【问题描述】:

我正在尝试在 Codeigniter 中为两个团队创建一个夹具。我有一张团队桌

TEAM
team_id
team_name
team_logo

我还有一个固定桌。

Fixture
fixture_id
fixture_text
fixture_comp
fixture_type
fixture_level
fixture_date

这两个表之间的关系是多对多的,这会创建一个 JOIN 表,该表具有由 team_id 和 fixture_id 组成的复合 PK

Team_Fixtures
team_id
fixture_id

我是 sql 和 Codeigniter 的初学者,这是我正在使用的框架,我希望查询这些表。我想从夹具表中获取所有信息,以及从团队表中获取团队名称和徽标。我能够单独查询表并获取信息,但我想知道如何在 Codeigniter 中编写一个连接语句,该语句将在同一个查询中获取所有信息。

这是我目前用来查询夹具表的。

型号

<?php  
class Fixture_model extends CI_Model {  


 public function __construct()
 {
  parent::__construct();
 }

 function fixtures() 

    {
        $fixture_level = "Roinn 1B";
        //Query the fixture table for every record and row  

        $results = array();
        $this->db->select('fixture_text, fixture_type, fixture_comp, fixture_date,   fixture_level');
        $this->db->from('fixture');
        $this->db->where('fixture_level', $fixture_level );

        $query = $this->db->get();

        if($query->num_rows() > 0) 
        {
         $results = $query->result();
        }

        return $results;   

    }  

}
/*End of file fixture_model.php*/
/*Location .application/models/fixture_model.php*/ 
?>

在我的视野中

<?php

     if (is_array($results))
     {
       if( !empty($results) ) 
       {

         foreach($results as $row) 
         {

          echo '<div class="col-sm-6 col-md-6">';
          echo '<div class="thumbnail">';
          echo '<tr>';
          echo '<h4>';
          echo '<td>'.$row->fixture_type.'</td>'."</br></br>";
          echo '<td>'.$row->fixture_level.'</td>'."</br></br>";
          echo '<td>'.$row->fixture_comp.'</td>'."</br>";
          echo '</h4>';


          echo '<td>'.$row->fixture_text.'</td>'."</br>";

          echo '<td>'.$row->fixture_date.'</td>'."</br></br>";
          echo '</tr>';
          echo '</div>';
          echo '</div>';
         }
       }

      else echo "Not Array";
    }

    ?>

我正在尝试创建一个夹具,其中包含团队 1 的团队名称和徽标,然后是夹具详细信息,然后是团队 2 的团队名称和徽标

我知道 JOIN 是这样的,但不确定要加入什么。

$this->db->select('*');
$this->db->from('fixture');
$this->db->join('team', '? = ?');

$query = $this->db->get();

非常感谢任何帮助

【问题讨论】:

    标签: php mysql sql codeigniter


    【解决方案1】:

    试试这样的

     $this->db->select('*');
    $this->db->from('Team_Fixtures');
    $this->db->join('team', 'Team_Fixtures.team_id = team.team_id');
    $this->db->join('Fixture', 'Team_Fixtures.fixture_id= Fixture.fixture_id');
    $query = $this->db->get();
    

    【讨论】:

    • Team_Fixtures 是唯一保存关系的表,因此如果您想要结果,则必须将记录放入其中。
    • 团队表已填充,夹具表已填充,但 team_fixtures 表为空,因此当我运行此查询 $this-&gt;db-&gt;select('*'); $this-&gt;db-&gt;from('Team_Fixtures'); 时,我什么也得不到 - 我是否需要手动插入夹具的 ID 和团队进入它。这就是我感到困惑的地方。这个表只有两列——team_team_id 和fixture_fixture_id——如果我正在创建一个夹具,是否应该没有两个团队的值? - 当我在团队和夹具表之间添加关系时,表是在 MySql Workbench 中自动创建的
    • 如果team_fixture 表有team1_team_id 和team2_team_id 和fixture_fixture_id 如果是,它们都是主键的一部分
    • 上面的数据库设计是针对多对多关系的。如果您想要一对多,则必须更改数据设计。在 many-many Team_Fixtures 中保存来自两个相关表的外键。 tomjewett.com/dbdesign/dbdesign.php?page=manymany.php
    • 把它作为另一个问题并描述你想要检索的内容。
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2017-09-27
    • 1970-01-01
    • 2018-04-04
    • 2013-02-18
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多