【问题标题】:How to Filter Paid or Not Paid Student In laravel如何在 laravel 中过滤付费或未付费学生
【发布时间】:2021-10-29 19:57:39
【问题描述】:

我刚刚为一所学校创建了一些支付系统,我需要将我的数据过滤到PaidNot Paid 类别。

$queryBuilder = Student::query()
    ->leftJoin('fee_scheem_maps', 'students.students_id', '=', 'fee_scheem_maps.sfc_student_id')
    ->leftJoin('fee_scheems', 'fee_scheem_maps.sfc_feescheem_id', '=', 'fee_scheems.fee_scheems_id')
    ->leftJoin('individual_fee_scheems', 'fee_scheem_maps.sifc_feescheem_id', '=', 'individual_fee_scheems.ifs_id')
    ->leftJoin('fee_groups', 'fee_scheems.fee_scheems_id', '=', 'fee_groups.fg_fee_scheem_id')
    ->leftJoin('school_fee_collectors', 'students.students_id', '=', 'school_fee_collectors.fc_student_id')
    // ->Where('school_fee_collectors.fc_fee_group_id', $fromDate)
    // ->orWhereNull('school_fee_collectors.fc_fee_group_id', $pstatus)
    // ->orWhereNull('school_fee_collectors.fc_fee_group_id', $fromDate)
    ->when($fromDate, function ($query) use ($fromDate) {
        return $query->where('school_fee_collectors.fc_fee_group_id', $fromDate);
    })
    ->select('*', DB::raw('count(students_id) as total'));

一个子句可以正常工作:我需要随机选择wherenotWhere...

【问题讨论】:

  • 你的问题是什么?我不明白。
  • 好的,我需要使用费用收集器表过滤我的学生付款数据检查。所以我需要在我的前端选择已付费或未付费状态。我现在创建了它,我只能过滤一个条件。当我使用 Where 子句时,它只显示付费学生,当我使用 Where Null 时,它只显示未付费学生。

标签: laravel where-clause where-in


【解决方案1】:
$queryBuilder = Student::query()
    ->leftJoin('fee_scheem_maps', 'students.students_id', '=', 'fee_scheem_maps.sfc_student_id')
    ->leftJoin('fee_scheems', 'fee_scheem_maps.sfc_feescheem_id', '=', 'fee_scheems.fee_scheems_id')
    ->leftJoin('individual_fee_scheems', 'fee_scheem_maps.sifc_feescheem_id', '=', 'individual_fee_scheems.ifs_id')
    ->leftJoin('fee_groups', 'fee_scheems.fee_scheems_id', '=', 'fee_groups.fg_fee_scheem_id')
    ->leftJoin('school_fee_collectors', 'students.students_id', '=', 'school_fee_collectors.fc_student_id')
    ->when($fromDate, function ($query) use ($fromDate) {
        return $query->where('school_fee_collectors.fc_fee_group_id', $fromDate);
    })

->where(function($query) use ($request){
    if($request->paid_status){
       $query->where('table_name.columName',$request->paid_status)
    }
})->select('*', DB::raw('count(students_id) as total'));

您可以像这样使用 where ,当您的 $request->paid_status 为 null 意味着没有关于已付款未付费的过滤器时,查询返回所有内容,但什么时候有过滤器时,只有这个工作的地方

->where(function($query) use ($request){
    if($request->paid_status){
       $query->where('table_name.columName',$request->paid_status)
    }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多