table('expenses'); $builder->select('expenses.*, r.id AS reimb_id, r.amount AS reimb_amount, r.reimbursement_method, r.check_number, r.receipt_path AS reimb_receipt, r.status AS reimb_status, r.school_year, r.semester, r.created_at AS reimb_created_at, r.reimbursed_to AS reimb_recipient_id, reimb.firstname AS reimb_firstname, reimb.lastname AS reimb_lastname, approver.firstname AS approver_firstname, approver.lastname AS approver_lastname'); $builder->join('reimbursements r', 'r.expense_id = expenses.id', 'inner'); $builder->join('users reimb', 'reimb.id = r.reimbursed_to', 'left'); $builder->join('users approver', 'approver.id = r.approved_by', 'left'); if (!empty($filters['school_year'])) { $builder->where('r.school_year', $filters['school_year']); } if (!empty($filters['semester'])) { $builder->where('r.semester', $filters['semester']); } if (!empty($filters['status'])) { $builder->where('r.status', $filters['status']); } if (!empty($filters['user_id'])) { $builder->where('r.reimbursed_to', $filters['user_id']); } $builder->orderBy('r.created_at', 'DESC'); return $builder; } }