我正在使用codeigniter和ion_auth创建一种卡片收集程序进行身份验证。用户应该能够将卡片添加到他的收藏中。 所以我有一个用户表和一张牌桌以及一个交叉/桥牌表。
users
ID
NAME
和
cards
ID
NAME
和
users_cards
ID
USER_ID
CARD_ID
我想完成一个SELECT语句,通过user_cards从用户检索卡片。
$this->db->select('*');
$this->db->from('cards');
$this->db->join('users_cards', 'users.id = users_cards.user_id', 'inner');
$this->db->join('users', 'users_cards.user_id = users.id', 'inner');
$query = $this->db->get();
return $query->result_array();
我似乎无法掌握这些联接的概念。有人可以帮助我吗?
答案 0 :(得分:1)
看起来连接语句缺少对“卡片”表的引用。
$this->db->select('*');
$this->db->from('users_cards');
$this->db->join('users', 'users.id = users_cards.user_id', 'inner');
$this->db->join('cards', 'cards.id = users_cards.card_id', 'inner');
$query = $this->db->get();
return $query->result_array();
这个想法是你试图通过引用他们的相关ID来获得users_cards和其他两个表之间的关系
答案 1 :(得分:0)
由于您没有加入用户表,因此无法基于users.id引用加入。所以你需要改变
$this->db->join('users_cards', 'users.id = users_cards.user_id', 'inner');
到
$this->db->join('users_cards', 'cards.id = users_cards.card_id', 'inner');