非常快,我有这个学校项目,我正在研究,但似乎有些问题。
我有:
表A - 收费:
id | feename | fee_level | fee_acad_year
表B - 付费:
id | fee_id | student_number | payment_status
所以我想要做的是,我想在费用表中循环收取所有费用,然后转到付费费用表,检查那里是否存在关于学生号码的fee_id
并且支付状态仅为1即支付。
如果fee_id
存在,则应将其标记为付费付款,并将其作为付费数据存储在数组中。
然后,如果它不存在,它应该将它们存储在另一个数组中,而不是付费的。
这是我的代码:
// Fetch All fees for that level, semester and acamedic year
$fees = DB::table('fee')
->where([
['fee.Department','=',$csl->departmentid],
['fee.Semester','=',$csl->semesterid],
['fee.StudentLevel','=',$csl->levelid]
])
->select('id')
->get();
}
//return $fees;
$feeids = array();
foreach($fees as $fee){
$feeids[] = $fee->id;
}
//dd($feeids);
// Select all from paid fees
$paidFees = PaidFees::all();
$paidFeeIds = array();
foreach($paidFees as $pd) {
$paidFeeIds[] = $pd->FeeId;
}
$status = "";
if(in_array($feeids, $paidFeeIds)) {
$status = "paod";
}else {
$status = "Not Paid";
}
这是我感到困惑的部分。
答案 0 :(得分:1)
如果您需要一系列付费费用ID和一系列未付费费用ID,您可以使用Eloquent。
首先,定义一个关系:
public function paidFees()
{
return $this->hasMany(PaidFees::class, 'fee_id');
}
然后获取ID:
$paidFeesIds = Fee::whereHas('paidFees', function($q) {
$q->where('payment_status', 1);
})->pluck('id')->toArray();
$notPaidFeesIds = Fee::whereNotIn('id', $paidFeesIds)->pluck('id')->toArray();