【问题标题】:How do I do select from a one-to-many relationship in CodeIgniter?如何从 CodeIgniter 中的一对多关系中进行选择?
【发布时间】:2010-12-10 09:19:52
【问题描述】:

我有许多表,我试图在 CodeIgniter 中访问,其中一个基本上是来自其他表的外键集合,其中大部分只有两个字段:唯一 id 和名称。我们称之为“活动”表,它以这些表的 id 的形式从其他表中提取数据(因为名称可能不是唯一的)。

现在我想做的是以人类可读的形式显示“活动”数据,意思是显示外国名称,而不是 id。我认为这被称为“加入”,但我对此不是 100% 确定的。我查看了 MySql 的页面,他们说这实际上不是外键的用途,但我认为您需要外键来连接,所以我现在真的更困惑了。

我真的为此使用连接和外键吗?提前致谢。

【问题讨论】:

    标签: php mysql codeigniter foreign-keys join


    【解决方案1】:

    外键提供了指向同一张表或另一张表(通常是后者)中另一条记录的链接。连接使用两个表(有时是同一个表)中的公共数据来提供它们之间的链接。

    如果您有两个要连接的表,并且这两个表之间的唯一共同因素是在第三个表中(具有所有外键的那个),您将需要执行 2 次连接。

    例子

    SELECT *.table1, *.table2 FROM table1
    LEFT JOIN foreign_key_table ON foreign_key_table.id1 = table1.id
    LEFT JOIN table2 ON foreign_key_table.id2 = table2.id
    WHERE.....
    

    在 Codeignter 中:

    $this->db->select('*.table1, *.table2');
    $this->db->from('table1');
    $this->db->join('foreign_key_table', 'foreign_key_table.id1 = table1.id');
    $this->db->join('table2', 'foreign_key_table.id2 = table2.id');
    $this->db->where('...');
    

    您可以在这里找到您需要的所有信息 - http://codeigniter.com/user_guide/database/active_record.html

    希望这会有所帮助。

    【讨论】:

    • 所以你的意思是,加入本身应该负责将外键的 id 与名称链接并自动显示人类可读的内容?那好吧。我想我只需要弄清楚如何让 CodeIgniter 为我做到这一点。这比 Rails 困难得多。谢谢!
    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多