несколько переменных в цикле foreach - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь включить две переменные, которые зацикливаются в массиве, в один цикл foreach, на мой взгляд, для отображения записей о победах и поражениях для данной команды за этот год. Если для обоих можно использовать один и тот же пустой массив, тогда круто, но я здесь не для этого ...

public function show($id)
    {
       $seasons =( [ 2005, 2006,2007,
            2008,
            2009,
            2010,
            2011,
            2012,
            2013,
            2014,
           2015,
           2016]);

          $seasonFinalWins=[];
          $seasonFinalLosses=[];


        foreach($seasons as $homeFinalWin) {
            $seasonFinalWins[$homeFinalWin]=GameData::where('team', $id)->
            where('win', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $homeFinalWin)
            ->count();
           }

           foreach($seasons as $homeFinalLoss) {
            $seasonFinalLosses[$homeFinalLoss]=GameData::where('team', $id)->
            where('loss', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $homeFinalLoss)
            ->count();
           }

View

 @if($seasonFinalWins)
 @foreach($seasonFinalWins as $seasonFinalWin)
  <td>{{$seasonFinalWin}}</td>
 @endforeach
 @endif

Как включить $ seasonFinalLosses в мой foreach в представлении выше?

Я экспериментировал с объединением ...

 $finalRecords=([$seasonFinalLosses, $seasonFinalWins]);

и просмотр ...

 @if($finalRecords)
 @foreach($finalRecords as $finalRecord)
  <td>{{$finalRecord->$seasonFinalWins}}</td>
 @endforeach
 @endif

но я получил ошибку типа String. Мне нужно знать, есть ли способ сделать так, чтобы обе переменные могли быть вызваны на один и тот же foreach через -> или любым другим способом?

Чтобы было ясно, у меня есть столбец Wins, отображаемый для каждого года, но мне нужен способ включить потери в один и тот же. Спасибо.

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

вы не можете использовать этот код. Я надеюсь, что полезно для вас:

getMessagesFor метод:

public function getMessagesFor(Request $request)
{

    $seasons = [ 2005, 2006,2007,
        2008,
        2009,
        2010,
        2011,
        2012,
        2013,
        2014,
        2015,
        2016];

    $seasonFinal=[];
    foreach($seasons as $session) {
        $seasonFinal['win'][$session]=GameData::where('team', $id)->where('win', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $session)
            ->count();
        $seasonFinal['loss'][$session]=GameData::where('team', $id)->
        where('loss', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $session)
            ->count();
    }


return view('welcome3',compact('seasonFinal'));

}

welcome3 просмотр:

<table border="1">

@if($seasonFinal)
    @foreach($seasonFinal as $key=>$years)
        <td>type : {{$key}}</td>
        <td>count </td>
        @foreach($years as $year=>$count)
            <tr>
                <td>{{$year}}</td>
                <td>{{$count}}</td>
            </tr>
        @endforeach
    @endforeach
@endif

</table>

результат:

enter image description here

<table border="1">

                        <tbody><tr><td>type : win</td>
            <td>count </td>
                            </tr><tr>
                    <td>2005</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2006</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2007</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2008</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2009</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2010</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2011</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2012</td>
                    <td>1</td>
                </tr>
                            <tr>
                    <td>2013</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2014</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2015</td>
                    <td>2</td>
                </tr>
                            <tr>
                    <td>2016</td>
                    <td>1</td>
                </tr>
                                <tr><td>type : loss</td>
            <td>count </td>
                            </tr><tr>
                    <td>2005</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2006</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2007</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2008</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2009</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2010</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2011</td>
                    <td>1</td>
                </tr>
                            <tr>
                    <td>2012</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2013</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2014</td>
                    <td>1</td>
                </tr>
                            <tr>
                    <td>2015</td>
                    <td>0</td>
                </tr>
                            <tr>
                    <td>2016</td>
                    <td>0</td>
                </tr>
                        
</tbody></table>

При необходимости вы можете создавать различные стили и режимы для своего стола.

например, это другая модель:

getMessagesFor метод:

public function getMessagesFor(Request $request)
{

    $seasons = [ 2005, 2006,2007,
        2008,
        2009,
        2010,
        2011,
        2012,
        2013,
        2014,
        2015,
        2016];

    $seasonFinal=[];
    foreach($seasons as $session) {
        $seasonFinal[$session]['win']=GameData::where('team', $id)->where('win', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $session)
            ->count();
        $seasonFinal[$session]['loss']=GameData::where('team', $id)->
        where('loss', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $session)
            ->count();
    }


return view('welcome3',compact('seasonFinal'));

}

welcome3 просмотр:

<table border="1">

@if($seasonFinal)
    <tr>
        <td>year  </td>
        <td> win count</td>
        <td> loss count</td>
    </tr>
    @foreach($seasonFinal as $year=>$value)
        <tr>
            <td>{{$year}}</td>
            <td> {{$value['win']}}</td>
            <td> {{$value['loss']}}</td>
        </tr>
    @endforeach
@endif

</table>

результат:

enter image description here

0 голосов
/ 02 июля 2018

Мне удалось решить эту проблему с помощью справки на странице FB laravel ....

Контроллер

            $seasons =( [ 2005, 2006,2007,
            2008,
            2009,
            2010,
            2011,
            2012,
            2013,
            2014,
           2015,
           2016]);



           $seasonFinalWins=[];
           $seasonFinalLosses=[];

    foreach($seasons as $homeFinalWin) {
            $seasonFinalWins[$homeFinalWin]=GameData::where('team', $id)->
            where('win', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $homeFinalWin)
            ->count();
           }

           foreach($seasons as $homeFinalLoss) {
            $seasonFinalLosses[$homeFinalLoss]=GameData::where('team', $id)->
            where('loss', '1')
            ->where('stage', 'R16')
            ->where('round', 'final')
            ->where('year', $homeFinalLoss)
            ->count();
           }

View

     <th scope="row">Finals Appearances</th>


@if(isset($seasonFinalWins) && isset($seasonFinalLosses))
  @foreach($seasonFinalWins as $key => $sfn)
    <td>{{$sfn}}-{{$seasonFinalLosses[$key]}}</td>
  @endforeach
@endif

ПРИМЕЧАНИЕ: Не уверен, что переменные с пустым массивом необходимы, но человек, который помог мне с этим кодом, включил их.

0 голосов
/ 02 июля 2018

Использование array_merge

$finalRecords = array_merge($seasonFinalLosses, $seasonFinalWins);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...