php - 如何在codeigniter中基于关联实体获取数据

标签 php mysql codeigniter join

我正在尝试根据关联表user_group从两个表usersgroups获取数据,但没有得到正确的结果

用户

id
user_name

群组

id
group_name

用户组

user_id
group_id



user_id    group_id
1             81
2             81
3             81
4             81
5             4
6             4

我想要这样的东西

 group_id     group_name              group_users
  1           marketing          asif, jamshed, alax
  2           Production          abc, xyz, lmn

我的 Controller 代码

 $post = $this->input->post();

    $postArray = $post;
    $secondaryarray = array();

    foreach ($postArray as $key => $value) {

        if ($key == "gropup_id")
            $secondaryarray['gropup_id'] = $value;

        unset($postArray['gropup_id']);
    } $tablename = 'tbl_users';
                $check = $this->Database_class->insert($postArray, $tablename);

                if (!empty($secondaryarray['gropup_id'])) {
                    $id['user_id'] = $this->db->insert_id("$tablename");
                    foreach ($secondaryarray['gropup_id'] as $value) {

                        $column_name = array(
                            'user_id' => $id['user_id'],
                            'gropup_id' => $value);

                        $tablename = 'tbl_user_group';
                        $check = $this->Database_class->insert($column_name, $tablename);

                        return redirect('users/Users/index');
                    }
                } elseif ($check) {

                    return redirect('users/Users/index');
                }

我的查看代码

 <table>
    <thead>
        <tr>

            <th>Name</th>
            <th>Group Users</th>

        </tr>
    </thead>
    <tbody>

        <?php
        $i = 0;
        foreach ($getTableGroup as $value) {
            ?>
            <tr>

                <td>
                    <?= $value->group_name ?>
                </td>
                <td>
                    <?php
                    $query = $this->db->select('username')
                            ->from('tbl_users')
                            ->join('tbl_user_group', "tbl_users.user_id = $value->id AND tbl_user_group.gropup_id = $value->id ")
                            ->get()
                            ->result();
                    ?>
                    <span class="label label-success"><?php foreach ($query as $value1): ?> <?= $value1->username ?> <?php endforeach; ?></span>
<!-- <input class="tagsinput form-control" type="text" value=""/>-->

                </td>

                <td >    
   </div>
                        </div>

                    <?php endif; ?>
                </td>
                <td>

                </td>
            </tr>
            <?php
            $i++;
        }
        ?>

    </tbody>
</table>

最佳答案

我无法测试它,但这应该对你有用:

<?php

$query = $this->db->select('c.user_name, b.group_id, a.group_name')
    ->from( 'tbl_groups a' )
    ->join( 'tbl_user_group b', 'a.id = b.group_id' )
    ->join( 'tbl_users c', 'b.user_id = c.id' )
    ->get();

echo '<table><tbody>';

if( $query->num_rows() > 0 )
{
    foreach( $query->result() as $row )
    {
        $group_names[$row->group_id] = $row->group_name;
        $group_users[$row->group_id][] = $row->user_name;
    }

    foreach( $group_names as $group_name )
    {
        foreach( $group_users as $group_id => $users_array )
        {
            echo '<tr>
                <td>' . $group_id . '</td>
                <td>' . $group_name . '</td>
                <td>' . implode(',', $users_array) . '</td>
            </tr>';
        }
    }    
}

echo '</tbody></table>';

关于php - 如何在codeigniter中基于关联实体获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45796767/

相关文章:

php - IN 子句无法正常工作。

php - 对结果集中的每 5 条记录调用一个函数

PHP 和 SQL : code is really slow

php - 添加列时 SQL 中的多个 CASE

mysql - Sqlite3 创建表时出错

javascript - 数据表上的范围日期搜索 (CodeIgniter)

php - 检查时间戳是否是今天

php - 了解 laravel 'auth' 和 'web' 中间件

mysql - MySQL中如何查询某个数据范围的数据

php - 我正在处理产品列表过滤器,但没有获得一种条件的逻辑,建议我进行更改