Laravel - Записване на резултати от SQL заявка в масив

C++ JAVA
Post Reply
respec7_m3
Нов
Нов
Posts: 170
Joined: Wed Jun 30, 2010 4:42 pm

Laravel - Записване на резултати от SQL заявка в масив

Post by respec7_m3 » Tue Mar 24, 2020 7:35 pm

Здравейте, първо нека покажа СХЕМА на цялата база от данни.
Това е база данни пълна с информация за състезания от формула 1. Това, което се опитвам да направя е следното:
От таблица drivers искам да взема първото и второто име на пилота, който е победил в дадено състезание.
За целта правя следната заявка:

Code: Select all

$winners = DB::table('drivers')
            ->join('results', 'drivers.driverId', '=', 'results.driverId')
            ->select('drivers.forename', 'drivers.surname')
            ->where('results.raceId', '=', '1010')
            ->where('results.position', '=', '1')
            ->distinct()
            ->get();
До тук добре, но така вземам две имена на пилот спечелил състезание с ID 1010.
Целта ми е да взема имената на всички пилоти спечелили състезания през сезон 2020.
Правя си една заявка, в която взимам състезанията, които ми трябват от таблица races, която изглежда така:

Code: Select all

$allRaces = Races::all()->where('date', '>', '2020');
След което с foreach цикъл обхождам за да взема ID-то на всяко състезание за да мога след това да го подам като динамичен параметър в първата заявка:

Code: Select all

foreach ($allRaces as $k => $v)
{
    $arr[] = $allRaces[$k]->raceId;
}
В момента успявам да запиша имената на пилот само за конкретно състезание, чрез първата заявка, която съм показал.
Въпросът ми е как да подам тези ID-та от foreach цикъла динамично в първата заявка, така че имената на пилотите да бъдат записани в масив?

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3225
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 124

Re: Laravel - Записване на резултати от SQL заявка в масив

Post by dakata__92 » Wed Mar 25, 2020 7:45 am

Ако съм те разбрал, търсиш нещо подобно или не съм схванал правилно заданието ти?

Code: Select all

$allRaces = Races::all()->where('date', '>', '2020');
$arr = [];
foreach ($allRaces as $k => $v)
{
    $arr[] = $allRaces[$k]->raceId;
}

$winners = DB::table('drivers')
            ->join('results', 'drivers.driverId', '=', 'results.driverId')
            ->select('drivers.forename', 'drivers.surname')
            ->whereIn('results.raceId', $arr )
            ->where('results.position', '=', '1')
            ->distinct()
            ->get();

pix3l
Нов
Нов
Posts: 158
Joined: Sat Oct 08, 2016 2:31 pm

Re: Laravel - Записване на резултати от SQL заявка в масив

Post by pix3l » Thu Mar 26, 2020 11:24 am

Можеш да започнеш с races, после join-ваш results (races.raceId = results.raceId) и drivers (results.driverId = drivers.driverId).

Post Reply