codeigniter将数据从视图传递到模型并检索信息

时间:2010-12-22 12:23:26

标签: mysql codeigniter

这是事情: 我有控制器从数据库中检索数据并将信息传递给视图。在视图中,我有一个这样的循环:

foreach ($myphotos->result() as $myphoto){
echo $myphoto->p_id
}

但是在那个循环中,我需要选择$ myphoto-> p_id并要求数据库使用此p_id检索我的用户。

SELECT * FROM users WHERE u_id IN (SELECT u_id FROM p_votes WHERE p_id = 268);

并在:

foreach ($myphotos->result() as $myphoto){
echo $myphoto->p_id
$this->load->model('m_member');
$users_voted = $this->m_member->getUsersVotedOnImage($myphoto->p_id);
foreach ($users_voted->result() as $users){
echo '<div id="voterfooter">voted:<a href="$users->i_id">'.$users->name.</a>
}
}

好的,这是我提出的一个选项,但还有另一种选择,但是select语句太复杂了!

这是如何: 我已经有了这个:

SELECT * FROM photos WHERE p_id NOT IN (SELECT distinct p_id FROM p_votes where u_id = ".$this->session->userdata('u_id').") LIMIT ".$segment_url.", ".$config['per_page'];

但是如何从那些在该图片上投票并将其打印出来的用户中获取?

这是数据库方案:

CREATE TABLE IF NOT EXISTS `users` (
  `u_id` int(10) unsigned NOT NULL auto_increment,
  `fb_id` varchar(255),
  `fb_url` varchar(255),
  `email` varchar(100),
  `username` varchar(100),
  `name` varchar(100),
  `lastname` varchar(100),
  `mini_pic_fb` varchar(255),
  `mini_pic` varchar(255),
  `country` varchar(100),
  `place` varchar(100),
  `address` varchar(100),
  `nr` int(10),
  `postcode` varchar(10),
  `pass` varchar(35),
  `active` varchar(35),
  `activation_code` varchar(42),
  PRIMARY KEY  (`u_id`),
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `username` (`username`),
  UNIQUE KEY `fb_id` (`fb_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=229 ;


CREATE TABLE IF NOT EXISTS `photos` (
  `p_id` bigint(20) unsigned NOT NULL auto_increment,
  `u_id` bigint(20) unsigned NOT NULL default '0',
  `p_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `p_content` longtext NOT NULL,
  `p_title` text NOT NULL,
  `p_photo` text NOT NULL,
  `p_small` text NOT NULL,
  `p_thumb` text NOT NULL,
  `p_up` bigint(20),
  `p_down` bigint(20),
  PRIMARY KEY  (`p_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=229 ;

CREATE TABLE IF NOT EXISTS `p_votes` (
  `pv_id` bigint(20) unsigned NOT NULL auto_increment,
  `u_id` bigint(20) unsigned NOT NULL,
  `p_id` bigint(20) unsigned NOT NULL,
  `pv_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `pv_ip` varchar(200) NOT NULL,
  PRIMARY KEY  (`pv_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=229 ;

1 个答案:

答案 0 :(得分:0)

我制作了MVC模式,但我不知道如何做到这一点! 如果有人知道怎么做而不打破MVC,请回复! 在视图中:

foreach ($myphotos->result() as $myphoto){
       $query = "SELECT * FROM users WHERE u_id IN (SELECT u_id FROM p_votes WHERE p_id = ".$myphoto->p_id.")";
    $voters = $this->db->query($query)->result();

        echo $myphoto->p_title;
        foreach($voters as $row){
        echo '<div id="voterfooter">';
    echo '<a href="'.base_url().'clanovi/clan/'.$row->u_id.'">';
    echo $row->name.' '.$row->lastname.'</a>';
    echo '</div>';
    }
}