Skip to content

Instantly share code, notes, and snippets.

@hodadgists
Created February 17, 2014 17:05
Show Gist options
  • Save hodadgists/9054682 to your computer and use it in GitHub Desktop.
Save hodadgists/9054682 to your computer and use it in GitHub Desktop.
$missingtickets = DB::table('j_ticket AS t')
->join('j_event AS e', 'e.id', '=', 't.event_id')
->join('users AS mu', 'mu.id', '=', 't.mod_user_id')
->join('users AS mc', 'mc.id', '=', 't.created_user_id')
->select(
't.id AS t_id', 't.eventDate', 't.purchase_order_id', 't.section', 't.row', 't.seat', 't.updated_at', 't.created_at',
'e.id AS e_id', 'e.name AS eventname',
'mu.username AS mod_username',
'mc.username AS created_username'
)
->where('t.eventDate', '>=', '2010-01-01')
->whereIn('t.id', function($query)
{
$query->select('j_ticket.id')
->from('j_ticket')
->where('j_ticket.sold', '=', '1')
->whereNotIn('j_ticket.id', function($query)
{
$query->select('j_invoice_ticket.ticket_id')
->from('j_invoice_ticket')
->where('j_invoice_ticket.ticket_id', '=', 'j_ticket.id');
});
})
->get();
@hodadgists
Copy link
Author

query log (without the joins so output doesn't get truncated)

'select t.id as t_id, t.eventDate, t.purchase_order_id, t.section, t.row, t.seat, t.updated_at, t.created_at from j_ticket as t
where t.eventDate >= ?
and t.id in (
select j_ticket.id from j_ticket
where j_ticket.sold = ?
and j_ticket.id not in (
select j_invoice_ticket.ticket_id
from j_invoice_ticket
where j_invoice_ticket.ticket_id = ?
)
)'

@hodadgists
Copy link
Author

the SQL i am recreating:

select t.id, e.id, e.name, e.date, e.time, t.purchase_order_id, t.section, t.row, t.seat, t.updated_at, u1.username, t.created_at, u2.username
from j_ticket t
inner join j_event e on e.id = t.event_id
inner join users u1 on u1.id = t.mod_user_id
inner join users u2 on u2.id = t.created_user_id
where e.date > '2009-01-01' and t.id in
(
select id from j_ticket where sold=true and id not in
(
select ticket_id from j_invoice_ticket where ticket_id=j_ticket.id
)
)
order by t.created";

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment