php - Codeigniter 加入两个表显示类别名称并列出所有项目

标签 php mysql codeigniter

我有两张 table

  1. 类别:

    • cat_id
    • 猫的名字
  2. 项目

    • items_it
    • 项目名称
    • item_cat

我想得到这个结果:

Category->cat_name1
- item_name1
- item_name2

Category->cat_name2
- item_name3
- item_name4

对于 PHP,我会选择这样的东西:

$query1 = 'SELECT *FROM Category';
foreach($query1 as $cat) { 
    $query2 = 'SELECT *FROM Items WHERE "item_cat" = $cat';

    echo $cat;
    foreach($query2 as $item) {
    echo $item;
    }
}

使用 CODEIGNITER 的最佳方法是什么?

最佳答案

下面是 Codeigniter 中使用您的架构的简单示例:

<?php
$this->db->select('*');     // select all columns
$this->db->from('Category'); // FROM table
$this->db->join('Items', 'Items.item_cat = Category.cat_id'); // INNER JOIN
$query = $this->db->get(); // GET RESULT
?>

要获取结果,您可以使用两种方法,要么以对象形式获取数据,要么以数组形式获取数据。

在 Array 中,使用 result_array() 方法,例如:

$result = $query->result_array();
echo "<pre>";
print_r($result); // will print all data in array

在 Object 中,使用 result() 方法,例如:

$result = $query->result();
echo "<pre>";
print_r($result); // will print all data in object

现在您可以按需要排序:

$newArray = array();
foreach ($result as $key => $value) {
    $newArray[$value['cat_name']][] = $value; // sort as per category name
}
print_r($newArray); // will print all data against each category.

现在将您需要的结果打印为:

foreach ($newArray as $key => $value) {
    echo $key."<br/>"; // print Category Name
    foreach ($value as $final_value) {
        echo $final_value['item_name']."<br/>"; // print all items against category
    }
}

Query Builder Class 浏览文档,这将帮助您更多地了解如何利用 INNERLEFT 加入 CI。

关于php - Codeigniter 加入两个表显示类别名称并列出所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43074992/

相关文章:

php - 使用 PHP 和 MySQL 显示日语字符的问题

php - 为每个客户端包含使用 base_url() 是否值得?

未安装/加载/启用 PHP 扩展,使用官方 PHP docker 镜像

php - composer dump-autoload -o 跳过我所有的类(class)

oop中的php变量范围

mysql - 服务器 2012 r2 和 mysql

php - Joomla 文章和博客中的空间太大

mysql - 复合关键索引是否可以提高 or 子句的性能

php - 在 Codeigniter 中创建 Cookie

php - CodeIgniter 中的事件记录增量超过应有值