Мне нужен возврат в коллекции для разбивки на страницы, но я могу только вернуть в массиве, потому что запрос использует естественный JOIN.
Как я могу сделать этот запрос, используя коллекции Laravel:
ВЫБЕРИТЕ mensagens. * ИЗ МЕНСАГЕНОВ ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ (ВЫБЕРИТЕ id_emissor, МАКС. (Созданный_атт) созданный_от ОТ МЕНСАГЕНОВ ГДЕ id_receptor = «. $ User_id.» GROUP BY id_emissor) t
Я использовал этот код:
$ mensagem = \ DB :: select (
DB :: raw («ВЫБРАТЬ mensagens. * ИЗ МЕНСАГЕНОВ ЕСТЕСТВЕННОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ id_emissor, MAX (made_at) made_at ИЗ МЕНСАГЕНОВ WHERE id_receptor =». $ User_id. «GROUP BY id_emissor) t»)
);
Если вы хотите использовать ваш запрос как есть, используйте вот так:
\DB::raw("SELECT mensagens.* FROM mensagens NATURAL JOIN ( SELECT id_emissor, MAX(created_at) created_at FROM mensagens WHERE id_receptor = ".$user_id." GROUP BY id_emissor) t");
Еще вы можете использовать Eloquent также.
Других решений пока нет …