dota220141003 2018-08-25 15:57
浏览 51

codeigniter中的多个连接不起作用

Can you help me with fixing my bug?

I tried to join three tables: Users, crush, and discrush.

But no result is found with this code.

Database:

  • Users: id, and stuff
  • Crush: id, user_id, user_id_to
  • Discrush: id, user_id, user_id_to

Query:

SELECT
  *
FROM
  `users`
  RIGHT JOIN `discrush` ON `users`.`id` = `discrush`.`user_id_to`
  RIGHT JOIN `crush` ON `users`.`id` = `discrush`.`user_id_to`
WHERE
  `users`.`sexe` = 'female'
  AND `users`.`valid_admin` = '1'
  AND `users`.`id` NOT IN('81')
  AND `crush`.`user_id_to` is NULL
  OR `users`.`sexe` = 'female'
  AND `users`.`valid_admin` = '1'
  AND `users`.`id` NOT IN('81')
  AND `discrush`.`user_id_to` is NULL
ORDER BY
  RAND()

Model:

function GetUserForCrushRoom($my_user_id, $sexe)
{
    $this->db->select('*');
    $this->db->from('users');
    $this->db->join('discrush', 'users.id = discrush.user_id_to', 'right');
    $this->db->join('crush', 'users.id = discrush.user_id_to', 'right');

    $this->db->where('users.sexe =', $sexe);
    $this->db->where('users.valid_admin =', '1');
    $this->db->where_not_in('users.id', $my_user_id);
    $this->db->where('crush.user_id_to is NULL');

    $this->db->or_where('users.sexe =', $sexe);
    $this->db->where('users.valid_admin =', '1');
    $this->db->where_not_in('users.id', $my_user_id);
    $this->db->where('discrush.user_id_to is NULL');
    $this->db->order_by('users.id', 'RANDOM');
    $query = $this->db->get();
    return $query->row();

}

Controller:

public function crush_room()
{
    $my_user_id = $this->session->userdata('user_id');
    if($my_user_id != '')
    {
        $data['my_user_id'] = $my_user_id;
        $my_user = $this->home->get_user($my_user_id);

            $sexe = $my_user->sexe;

            if($my_user->sexe == 'male')
            {
                $sexe = 'female';
            }else{
                $sexe = 'male';
            }

            $data['user'] = $this->home->GetUserForCrushRoom($my_user_id, $sexe);

            if($data['user']){
                $data['user_crush'] = $this->home->CheckCrush($my_user_id, $data['user']->id);
                $data['user_block'] = $this->home->CheckBlockUser($my_user_id, $data['user']->id);
            }

            $data['users'] = $this->home->get_all_user_crush($my_user_id);

            $this->load->view('crush_room', $data);
    }
    else{
        redirect('login');
    }
}
  • 写回答

2条回答 默认 最新

  • dth2331 2018-08-25 18:00
    关注

    Try joining crush with users.

    RIGHT JOIN crush ON users.id = crush.user_id_to

    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看