Если ваша таблица называется user_options, вот Eloquent запрос для выбора записей, которые вы ищете.
$getValues = DB::table('user_options')
->join(DB::raw('(SELECT max(user_options.id) FROM user_options INNER JOIN (
SELECT option_id, user_id FROM user_options GROUP BY option_id, user_id) sets
WHERE user_options.option_id = sets.option_id AND user_options.user_id = sets.user_id
GROUP BY user_options.option_id, user_options.user_id
) valuerecords'),
function($join)
{
$join->on('user_options.id', '=', 'valuerecords.id');
})->select(
'id',
'option_id',
'user_id',
'value'
)->get();
Необработанный запрос select получает идентификаторы последних записей, а затем он объединяетсявернуться к столу, чтобы взять записи.
Обратите внимание, что «последняя» запись - это запись с наибольшим идентификатором, поэтому она будет захватывать запись 77, а не 75. Если вы определяете последнее по-другому, вы можете соответствующим образом изменить необработанный запрос.