如何使用foreach循环进入另一个foreach循环来遍历codeigniter中的两个不同的数据表?
Posted
技术标签:
【中文标题】如何使用foreach循环进入另一个foreach循环来遍历codeigniter中的两个不同的数据表?【英文标题】:how to use foreach loop into another foreach loop to traverse two different datatables in codeigniter? 【发布时间】:2017-06-08 00:10:03 【问题描述】:是否可以在foreach循环中使用foreach循环遍历两个不同的数据库表得到结果?
我想向其用户和客户显示 admin_1 插入的产品列表? 我将产品和用户保存在两个不同的表中。我使用 admin_id 来区分产品和用户。 但我不知道如何获得准确的结果。 任何帮助表示赞赏。
这是我的代码:
<?php if (!empty($products)) ?>
<?php foreach ($products as $product) ?>
<?php if((($this->session->userdata('user_id')) == ($product->id_admin)) || (userdata('department') == 0 )) ?>
【问题讨论】:
可以。但是您提供的代码和信息不足以帮助您。 请给出任何一般性的例子来做到这一点。因为我输入了我的代码,而我在该代码中完成了其他工作。print_r($products)
发布您的输出。
Array ( [0] => stdClass Object ( [product_id] => 14 [id_admin] => 7 [title] => Array [icon] => e44277435e318a7aa8b0c4d7169bfc2b.jpg [description] => Array [价格] => 123.00 [链接] => [排序顺序] => 0))bool(true)
这是一个非常糟糕的问题。
【参考方案1】:
如果您想合并两个不同表的结果,解决方案总是使用 UNION。见https://dev.mysql.com/doc/refman/5.7/en/union.html
这是一个简单的 UNION 示例,适用于您的案例:
<?php
public function retrieve_products_users_by_username($this_user) // place this function into your model
$this->db->where('username',$this_user);
$this->db->select('id');
$this->db->limit(1);
$query_for_this_user = $this->db->get('users'); // whatever table you store the admin_1
$this_user_id = $query_for_this_user->row_array()['id'];
$this->db->select('products.id_admin as id_admin ,products.title as column1, products.icon as column2, products.descrption as column3 ...');
$this->db->from('products');
$products_query = $this->db->get_compiled_select();
$this->db->select('users.id_admin as id_admin ,users.username as column1, users.profile_picture as column2, users.address as column3 ...');
$this->db->from('users');
$users_query = $this->db->get_compiled_select();
$query = $this->db->query('SELECT * FROM (' . $products_query . ' UNION ' . $users_query . ') AS u WHERE u.id_admin='.$this_user_id);
return $query->result_array();
?>
我使用您在问题和 cmets 中提供的有限信息来编写此函数。根据您的表列名称等,实际情况可能会有所不同。
无论如何,当您在模型中完全准备好这个函数时,您可以像这样从控制器调用它:
<?php
$this->data['results'] = $this->YOURMODELNAME_model->retrieve_products_users_by_username('admin_1');
?>
正如我所说,UNION 是您的解决方案。 JOIN 不是您的解决方案,因为:
JOIN 简单地将两个表水平连接 UNION 简单地将两个表垂直连接起来【讨论】:
以上是关于如何使用foreach循环进入另一个foreach循环来遍历codeigniter中的两个不同的数据表?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 的 ForEach 循环中增加状态?
如何在 forEach 循环中使用 offset().top
无法在另一个 foreach mysql C# 中的 foreach 循环中获取 Last_inserted_id