Хорошо после нескольких часов исследований и до сих пор использующих DB :: select Я должен задать этот вопрос. Потому что я собираюсь прогнать свой компьютер;).Laravel Fluent Query Builder Присоединиться к подзапросу
Я хочу получить последний вход пользователя (база на отметке времени). Я могу сделать это с сырым SQL
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
Я получил этот запрос от другого почтового here на StackOverflow.
Я пробовал все, чтобы сделать это с помощью свободного конструктора запросов в Laravel, но без успеха.
Я знаю, что руководство говорит, что вы можете сделать это:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
Но это не помогает много, потому что я не понимаю, как я мог бы использовать подзапрос там? Любой, кто может осветить мой день?
Этот пакет должен для создания набора инструментов PHP для создания запросов, но нам нужно записать запрос и ввести его в оператор 'selectRaw'! Удалось ли вам передать беглый объект запроса в запрос вместо строки запроса? – HPM
Это становится невозможным, если у вас есть параметр в подзапросе - см., Например, ответ @ ph4r05, но я не уверен, можно ли его упростить, чтобы избежать этих уродливых toSql и addBinding – JustAMartin