Select rows from table 1 only if all corresponding rows have certain status in the join table
There are a couple issues I'll have to gloss over at this point due to lack of info:


no DDL; no sample data; no list of valid invoices.status values
"invoices are only in approved and closed status" implies an invoice needs at least 2 records ... one with status='approved' and one with status='closed' 


Instead of trying to find all orders with invoices that are a) 'approved' and 'closed', or b) 'approved' or 'closed' ... just look for orders that have no invoices with a status other than 'approved' or 'closed':

select distinct
       o.id
from   orders o
where not exists(select 1
                 from   order_lines ol
                 join   invoice_lines il
                 on     il.order_line_id = ol.id

                 join   invoices i
                 on     i.id = il.invoice_id
                 and    ifnull(i.status,'UNDEFINED') not in ('approved','closed')

                 where  ol.order_id = o.id)