【问题标题】:How to get data on basis of associative entity in codeigniter如何根据codeigniter中的关联实体获取数据
【发布时间】:2017-08-21 12:09:26
【问题描述】:

我正在尝试根据关联表 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

我的控制器代码

 $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 mysql codeigniter join


【解决方案1】:

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

<?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>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2020-04-11
    • 2014-01-04
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多