我有一个应用程序会检查用户是否已经参加某个活动,如果是, 应用程序提供的唯一选择是实际删除该出席。
然而,由于模型函数需要两个参数来检查用户是否已经参加但是我很难理解,因此我陷入了困境 如何从视图中获取event_id以实际检查event_id。
user_id很简单,因为它已保存在会话中。我觉得这太复杂了还是什么?
我的部分观点:
// In here I check if the user has already attended
<?php if($checkifattending == 0) :?>
<form action='<?=base_url()?>events/participateEvent' method='post'>
<input type='hidden' name='event_id' value='<?=$event['event_id']?>'/>
<input type='submit' name='attend_event' value='+' title='Osallistu tapahtumaan' class='medium-button-attend' />
</form>
<?php else:?>
<form action='<?=base_url()?>events/removeAttend' method='post'>
<input type='hidden' name='event_id' value='<?=$event['event_id']?>'/>
<input type='submit' name='remove_attend' value='-' title='Peru osallistuminen' class='medium-button-remind' />
</form>
<?php endif ?>
检查用户是否参加过该特定活动的模型:
public function checkifAttending($user_id, $event_id)
{
$where = array(
'userID' => $user_id,
'eventID' => $event_id
);
$this->db->select('eventID')->from('user_events')->where($where);
$query = $this->db->get();
// It will return either 0 or 1 based on if the user is already attended
return $query->num_rows();
}
我将模型函数传递给数组的控制器:
class Dashboard extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('event_model');
$this->load->model('user_model');
}
public function index()
{
// Array to return all the actual events
$data['events'] = $this->event_model->getAllEvents();
// How do I retrieve that $event_id value and assign it in this array?
$data['checkifattending'] = $this->event_model->checkifAttending($this->session->userdata('user_id'), $event_id);
$this->load->view('/template/header');
$this->load->view('events', $data);
$this->load->view('/template/footer');
}
}
答案 0 :(得分:0)
如果您在事件列表中同时检索考勤数据,我认为您会更容易。
尝试创建一个新的模型函数getAllEventsWithAttendance($ user_id),并选择LEFT JOINed到user_events的所有事件。这将为您提供完整的事件列表,以及来自user_events的连接数据(如果存在)。希望有意义!