【问题标题】:Show value of one table in other table (Codeigniter 4)在另一个表中显示一个表的值(Codeigniter 4)
【发布时间】:2021-08-30 03:44:12
【问题描述】:

我有两张桌子:

表1:

ID Name Email profile_id

表2:

id profile_name

我使用foreach 循环在视图中向网站上的用户显示table,但在该视图中,我希望profile_id 显示来自table2 的相应profile_name,而不是ID。

我想我应该使用join(),但我不知道如何使用它。如果需要,我可以提供我的代码,但我不这么认为。

有什么帮助吗?

【问题讨论】:

  • “我想我应该使用 join(),但我不知道如何使用它” - 那么这是做一些事情的绝佳机会proper research进入主题。但是,是的,使用join 将是解决此问题的正确方法。
  • 你绝对应该提供代码。
  • 没有它我的问题就解决了,我只是没有打扰,因为我不知道该显示什么

标签: php codeigniter model-view-controller


【解决方案1】:

在查看创建查询的 codeigniter 4 方法之前,花点时间了解连接背后的基本 SQL。联接允许您组合来自多个表的结果。您需要具体说明要从哪个表中获取哪个值。在基本 SQL 中,它看起来像

SELECT table1.something, table2.somethingElse 
FROM table1
JOIN table2
ON table1.id = table2.referenceID

关键是ON 关键字。它建立了两个表之间的链接。有时,您的结果中会出现相同的字段名称,例如 ID,因此您可以使用 AS 更改查询中的名称

SELECT  
   *, table1.id AS table1_id, 
   table2.id AS table2_id 
FROM table1
JOIN table2
ON table1.id= table2.referenceID

此查询仍会从两个数据库中获取 id 列,但也会获取新的临时字段,以便我们可以区分结果。

codeigniter 4你只需使用他们的方法

$builder = $db->table('table1');
$builder->select('table1.*, table2.profile_name');
$builder->join('table2', 'table1.profile_id = table2.id');
$query = $builder->get();
foreach ($query->getResult() as $row)
{
    $users[]= $row;
}
echo view('myPage', array('users' => $users) );

这是加入的最基本的基本介绍。我鼓励你learn more about them

【讨论】:

  • 感谢您的回答和资源,但我还有一个愚蠢的问题。基本上,在我的控制器中,我用 $data 返回我的视图,其中包括表中的每一行。我如何从这个连接的表中得到结果?我应该把它放在我的模型或控制器中吗?
  • 我更新了答案以显示如何将 db 查询转换为您可以在视图中使用的数据。如果您在控制器或模型中执行此操作并不重要,但为了方便起见,现在只需使用控制器并在您开始工作后移至模型(通常数据库内容发生在模型中,但没有关于它的规则)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
相关资源
最近更新 更多