Ok dopo ore di ricerca e utilizzando ancora DB :: selezionare Devo fare questa domanda. Perché sto per mandare via il mio computer;).Laravel Fluent Query Builder Unisciti alla sottoquery
Voglio ottenere l'ultimo input di un utente (base sul timestamp). Posso fare questo con lo SQL prime
SELECT c.*, p.*
FROM users c INNER JOIN
(
SELECT user_id,
MAX(created_at) MaxDate
FROM `catch-text`
GROUP BY user_id
) MaxDates ON c.id = MaxDates.user_id INNER JOIN
`catch-text` p ON MaxDates.user_id = p.user_id
AND MaxDates.MaxDate = p.created_at
ho ricevuto questa domanda da un altro post here su StackOverflow.
Ho provato a fare tutto ciò con il fluent query builder in Laravel, ma senza successo.
So che il manuale dice che si può fare questo:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
Ma questo non aiuta molto perché non vedo come potrei usare una sottoquery lì? Chiunque può illuminare la mia giornata?
Questo pacchetto dovrebbe per fornire un set di strumenti PHP per creare query, tuttavia abbiamo bisogno di annotare la query e di iniettarla con l'istruzione 'selectRaw'! Hai avuto la fortuna di passare un oggetto di query fluente alla query, invece della stringa di query? – HPM
Questo diventa impossibile se si ha un parametro nella sottoselezione - vedere la risposta di ph4r05 ad esempio, ma non sono sicuro se potrebbe essere semplificato per evitare quei brutti toSql e aggiungereBinding – JustAMartin