Как получить данные из базы данных вот так. Но случайно и никогда не дублировать.
$questions = Question::orderBy("created_at", 'desc')->skip(0)->take(3)->get();
$inquiries = Question::orderBy("created_at", 'desc')->skip(3)->take(3)->get();
$queries = Question::orderBy("created_at", 'desc')->skip(6)->take(3)->get();
$examinations = Question::orderBy("created_at", 'desc')->skip(9)->take(3)->get();
$inquisitions = Question::orderBy("created_at", 'desc')->skip(12)->take(3)->get();
Работает, но дублирует.
$questions = Question::inRandomOrder()->limit(10)->get();
$inquiries = Question::inRandomOrder()->limit(10)->get();
$queries = Question::inRandomOrder()->limit(10)->get();
$examinations = Question::inRandomOrder()->limit(10)->get();
$inquisitions = Question::inRandomOrder()->limit(10)->get();






Как насчет того, чтобы получить их все одним вызовом и отсортировать их с помощью PHP, используя метод коллекции сращивание:
$all = Question::inRandomOrder()->limit(50)->get();
$questions = $all->splice(0, 10);
$inquiries = $all->splice(0, 10);
$queries = $all->splice(0, 10);
$examinations = $all->splice(0, 10);
$inquisitions = $all->splice(0, 10);
Вы также можете просто сохранить идентификаторы, которые вы уже вытащили в массив, и игнорировать их при выполнении новых запросов с ->whereNotIn() следующим образом:
$except = []; // We'll save IDs of those pulled already here
$questions = Question::inRandomOrder()->limit(10)->get();
$except = array_merge($except, $questions->pluck('id')->toArray()); // Add IDs from upper call
// Add ->whereNotIn, to ignore IDs from $except
$inquiries = Question::inRandomOrder()->whereNotIn('id', $except)->limit(10)->get();
$except = array_merge($except, $inquiries->pluck('id')->toArray()); // Add IDs from upper call
$queries = Question::inRandomOrder()->whereNotIn('id', $except)->limit(10)->get();
$except = array_merge($except, $queries->pluck('id')->toArray()); // Add IDs from upper call
$examinations = Question::inRandomOrder()->whereNotIn('id', $except)->limit(10)->get();
$except = array_merge($except, $examinations->pluck('id')->toArray()); // Add IDs from upper call
$inquisitions = Question::inRandomOrder()->whereNotIn('id', $except)->limit(10)->get();
Ах да, вы также должны вызвать в ->toArray() после ->pluck(). Но я настоятельно рекомендую первый метод, так как вы сделаете только 1 вызов SQL вместо 5. Отредактировал свой ответ, включив ->toArray().
О Боже. Спасибо за вашу помощь и знания, сэр. Я это искал.
array_merge (): аргумент №2 не является массивом