Мой нижеприведенный код работает нормально, но для получения результатов требуется не менее 3 секунд. Можно сделать более быстрый запрос с такими же результатами без быстрой загрузки.
$value = User::whereIn('plan_id',['mprom03','mproy06'])
->leftJoin('locations as l', 'users.id', '=', 'l.user_id')
->leftJoin('abouts', 'users.id', '=', 'abouts.user_id')
->leftJoin('appearances', 'users.id', '=', 'appearances.user_id')
->leftJoin('sexes', 'users.id', '=', 'sexes.user_id')
->select('users.*','appearances.age','appearances.weight','appearances.height','sexes.oral','sexes.size', DB::raw('ROUND(6371 * acos(cos(radians(' . $cordiante[0] . ')) * cos(radians(`latitude`)) * cos(radians(`longitude`) - radians(' . $cordiante[1] . ')) + sin(radians(' . $cordiante[0] . ')) * sin(radians(`latitude`)))) as distance'))
->orderByRaw('RAND()')->limit(20)->get();