這篇文章主要介紹了ThinkPHP5實現作業管理系統中處理學生未交作業與已交作業信息的方法,涉及thinkPHP針對數據表的查詢與遍歷操作相關實現技巧,需要的朋友可以參考下
本文實例敘述了ThinkPHP5實作作業管理系統中處理學生未交作業與已交作業資訊的方法。分享給大家供大家參考,具體如下:
在作業管理系統中,學生登陸到個人中心後可以透過左側的選單查看自己已經提交的作業和未提交作業。那麼在系統中如何實現這些資料的查詢的呢?首先我們要先弄清楚學生(Student)、班級(class)、作業提交表(Submit)這三個表之間的關係。
1. 每個學生都屬於一個班級
2. 班級裡的每個學生都會被佈置同樣的作業
3. 學生提交作業後會在作業提交表中新增回應的記錄,如學生的ID,作業的ID,提交的內容等。
可以按照以下步驟取得學生已交作業和未交作業
1. 取得學生所在班級的所有作業
//获取学生所在班级的所有作业 public function getTasks($stuno) { $stu=$this::get(['stu_no'=>$stuno]); $clas=Clas::get(['clas_id'=>$stu['clas_id']]); return $clas->task; }
由上述程式碼課看出,首先根據學號($stuno)獲取學生信息,透過學生資訊表保存的班級ID(clas_id)再獲取學生所在班級信息,最後通過班級與作業表之間的多對多的關係(詳見Thinkphp5官方手冊關於模型的關聯部分內容),取得該學生所在班級所安排的所有作業。
2. 取得學生未交作業
//获取某学生所有未交作业 public function getUnSubmitTasks($stuno) { $stu=$this::get(['stu_no'=>$stuno]); $alltask=$this->getTasks($stuno); foreach($alltask as $key=>$value) { if(Submit::get(['task_id'=>$value['task_id'],'stu_id'=>$stu['stu_id']])) { unset($alltask[$key]);//删除已提交作业 } } return $alltask; }
此函數首先呼叫取得全部作業的函數($this->getTasks($stuno))獲得了學生所在班級的所有作業。這個資料集是一個二維數組,遍歷這個二維數組,看看這個二維數組中是否有作業已經被該學生提交到了Submit中,如果提交了就刪除該元素。
3.獲得學生已交作業
有了上述兩個函數,獲取已交作業的事情就變的簡單了,第一個函數獲得的二維數組減去第二個函數所傳回的陣列就是學生已交作業的集合,做下二維數組的求差即可
//获取某学生所有已交作业(所有作业和未交作业的差集) public function getSubmitTasks($stuno) { $unsubmit=$this->getUnSubmitTasks($stuno); $alltasks=$this->getTasks($stuno); $submittasks=array(); foreach ($alltasks as $key=>$value) { if(!in_array($value,$unsubmit)) { $submittasks[]=$value; } } return $submittasks; }
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
以上是以ThinkPHP5實現作業管理系統中學生未交作業與已交作業資訊的處理方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!