Мне не удалось добиться желаемого результата всего одним запросом ⇐ Php
-
Гость
Мне не удалось добиться желаемого результата всего одним запросом
Я использую Laravel Eloquent для захвата видео в определенном порядке.
Можно ли добиться того же результата всего одним запросом?
Случайный порядок необязателен.
Возможно, можно получить видео в указанном порядке (автомобили, мотоциклы, грузовики) с помощью одного запроса.
связанная с защищенной функцией (Видео $video): Коллекция { $nVideos = 6; $carVideos = Video::whereNot('id', $video->id) ->whereHas('cars', function (Builder $q) use ($video) { $q->whereIn('id', $video->cars->pluck('id')->toArray()); }) ->inRandomOrder() ->взять($nVideos) -> получить(); if ($carVideos->count() >= $nVideos) { вернуть $carVideos; } $bikeVideos = Video::whereNot('id', $video->id) ->whereHas('bikes', function (Builder $q) use ($video) { $q->whereIn('id', $video->bikes->pluck('id')->toArray()); }) ->inRandomOrder() ->взять($nVideos) -> получить(); $merged = $carVideos->merge($bikeVideos); if ($merged->count() >= $nVideos) { вернуть $merged; } $truckVideos = Video::whereNot('id', $video->id) ->whereHas('грузовики', функция (Builder $q) use ($video) { $q->whereIn('id', $video->trucks->pluck('id')->toArray()); }) ->inRandomOrder() ->взять($nVideos) -> получить(); вернуть $merged->merge($truckVideos); }
Я использую Laravel Eloquent для захвата видео в определенном порядке.
Можно ли добиться того же результата всего одним запросом?
Случайный порядок необязателен.
Возможно, можно получить видео в указанном порядке (автомобили, мотоциклы, грузовики) с помощью одного запроса.
связанная с защищенной функцией (Видео $video): Коллекция { $nVideos = 6; $carVideos = Video::whereNot('id', $video->id) ->whereHas('cars', function (Builder $q) use ($video) { $q->whereIn('id', $video->cars->pluck('id')->toArray()); }) ->inRandomOrder() ->взять($nVideos) -> получить(); if ($carVideos->count() >= $nVideos) { вернуть $carVideos; } $bikeVideos = Video::whereNot('id', $video->id) ->whereHas('bikes', function (Builder $q) use ($video) { $q->whereIn('id', $video->bikes->pluck('id')->toArray()); }) ->inRandomOrder() ->взять($nVideos) -> получить(); $merged = $carVideos->merge($bikeVideos); if ($merged->count() >= $nVideos) { вернуть $merged; } $truckVideos = Video::whereNot('id', $video->id) ->whereHas('грузовики', функция (Builder $q) use ($video) { $q->whereIn('id', $video->trucks->pluck('id')->toArray()); }) ->inRandomOrder() ->взять($nVideos) -> получить(); вернуть $merged->merge($truckVideos); }
Мобильная версия