嗨,首先我要告訴你,英語不是我的第一語言,所以請原諒任何誤解。我在這里嘗試的是使用“資料包”表中的外鍵訪問“捐贈者”表資料,我需要在控制器中獲取該資料才能使用。我是指PacketID在我的視圖和staff控制器我需要得到具體的DonorMobile和DonorName以短信發送給捐贈者。我曾嘗試創建多個模型函式,但沒有奏效。可以通過這種方式完成還是有其他方式?蒂亞!
donors和packets表的截圖
捐贈者表和 資料包表
職員控制器 - 我知道你不能像$donorData->DonorID控制器那樣訪問資料
public function markAsUsed($packet)
{
$this->load->Model('Donor_Model');
$donorData = $this->Donor_Model->getDonors($packet);
$this->load->Model('Donor_Model');
$data = $this->Donor_Model->markAsUsed($donorData->DonorID);
$sid = 'twilio sid';
$token = 'twilio token';
$donorMobile = ' 94' . $donorData->DonorMobile;
$twilioNumber = 'twilio number';
$client = new Twilio\Rest\Client($sid, $token);
$message = $client->messages->create(
$donorMobile, array(
'from' => $twilioNumber,
'body' => 'Thank you ' . $donorData->DonorName . ' for your blood donation. Your donation has just saved a life.'
)
);
if ($message->sid) {
$this->load->Model('Donor_Model');
$this->Donor_Model->changeStatus($data->isAvailable);
redirect('staff/viewpackets');
}
}
模型
function getDonors($packet) {
$data = $this->db->get_where('packets', array('PacketID' => $packet));
return $data->row();
}
function markAsUsed($donor)
{
$data = $this->db->get_where('donors', array('DonorID' => $donor));
return $data->row();
}
function changeStatus($packet)
{
$data = array(
'isAvailable' => False,
);
return $this->db->update('packets', $data, ['PacketID' => $packet]);
}
uj5u.com熱心網友回復:
您在答案中所做的事情是不可取的,當您擁有大型資料集時,使用回圈從表中獲取會大大降低系統速度。預期是使用 JOIN 查詢來加入捐贈者和資料包表,如下所示:
$this->db->select('donors_table.DonorName,donors_table.DonorMobile,packets_table.*')->from('packets_table');
$this->db->join('donors_table','donors_table.DonorID=packets_table.DonorID');
$query = $this->db->get();
$result = $this->db->result();
然后你可以遍歷每個捐贈者,如下所示:
foreach($result as $row){
$donarName = $row->DonorName;
$donorMobile = $row->DonorMobile;
}
注意:始終建議從模型中執行任何獲取、插入、洗掉或更新操作,這就是 Codeigniter 是 MVC 的原因。停止直接從控制器內的資料庫獲取資料。
uj5u.com熱心網友回復:
找到答案了!您只能使用控制器執行此操作。
$packetData = $this->db->get_where('packets', array('PacketID' => $packet));
foreach ($packetData->result() as $row) {
$donorID = $row->DonorID;
$packetDonatedDate = $row->DonatedDate;
}
$donorData = $this->db->get_where('donors', array('DonorID' => $donorID));
foreach ($donorData->result() as $row) {
$donarName = $row->DonorName;
$donorMobile = $row->DonorMobile;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/388807.html
