I have such SQL query, which works fine:
SELECT A.program_id FROM A LEFT JOIN B ON A.program_id = B.program_id WHERE B.program_id IS NULL
B
You are using join instead of left join
Try this
\DB::table('A') ->leftjoin('B', 'A.program_id', '=', 'B.program_id') ->select('A.program_id') ->whereNull('B.program_id') ->where('A.student_id', '=', 5) ->get()->toArray();
It will produce a query like