2013-10-16 178 views
0

我正在使用codeigniter 2xx。 MySQL表:codeigniter活動記錄where_in

create table hobby (
id int, 
school varchar, 
classes varchar, 
basketball text, {12,15,17...} 
football text, {12,18,20...} 
swimming text {11,15,....} 
); 

我打算存儲學生ID作爲在像籃球,足球和游泳MySQL表字段序列化(陣列(整數))。
我想找出一個特定的班級學生ID(如12),如果他加入任何愛好或超過1個愛好使用codeigniter活動記錄方法,但卡住了。下面是我的代碼:

$this->db->select('basketball','football','swimming'); 
$this->db->or_where('school', $data)->where('classes', $classid)->where_in($student_id, 'basketball'); 
$this->db->or_where('school', $data)->where('classes', $classid)->where_in($student_id, 'football'); 
$this->db->or_where('school', $data)->where('classes', $classid)->where_in($student_id, 'swimming'); 
$query = $this->db->get('hobby'); 

還是有更好的方式來存儲&處理信息?

回答

0
CREATE TABLE `student_hobby` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `student_id` INT(11) DEFAULT NULL, 
    `hobby_id` INT(11) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=INNODB DEFAULT CHARSET=utf8 

CREATE TABLE `hobby` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(500) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=INNODB DEFAULT CHARSET=utf8 

集愛好的學生:

$this->db->insert('student_hobby', array('student_id' => 12, 'hobby_id' => 1)); 

選擇學生誰擁有1個或更多的愛好:

+0

感謝ü這麼多的指點:) – user1884324

+0

歡迎您) –