【问题标题】:laravel multiple variables in foreach looplaravel foreach循环中的多个变量
【发布时间】:2018-07-01 21:48:57
【问题描述】:

在我看来,我试图在一个 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();
           }

查看

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

如何在上述视图中的 foreach 中包含 $seasonFinalLosses?

我已经尝试过结合...

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

然后查看...

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

但我得到一个数组到字符串错误。我需要知道是否有办法做到这一点,以便可以通过 -> 或任何其他方式在同一个 foreach 上调用两个变量?

需要明确的是,我每年都会显示 Wins 列,但我需要一种方法来将损失包含在同一 .谢谢。

【问题讨论】:

  • 在团队和他们的游戏数据之间使用雄辩的关系真的是一个帮助。 laravel eloquent 提供的模型方法真的会让你需要的信息的提取和整理变得非常简单,看一下。如果您需要任何进一步的建议/帮助,请回复,我们可以提供一个简单的指南。
  • 请附加并显示GameData 类和字段
  • 我可以查看那条路线,但是有没有办法像我问的那样包含两个变量?当我似乎要让它发挥作用时,我真的很讨厌完全放弃它。

标签: php laravel foreach eloquent


【解决方案1】:

您不能使用此代码。希望对你有用:

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>

结果:

<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>

结果:

【讨论】:

    【解决方案2】:

    使用array_merge

    $finalRecords = array_merge($seasonFinalLosses, $seasonFinalWins);
    

    【讨论】:

    • 您好,当我执行此操作并将我的视图更正为 ATif($finalRecords) ATforeach($finalRecords as $finalRecord) {{$finalRecord}} ATendforeach ATendif 我得到一个如果我尝试 {{$finalRecord->$seasonFinalLosses}},则数组到字符串的转换错误我希望将两个变量包含在同一个 foreach 中,以便它可以遍历每个变量并显示每个数字在我看来,同一行。
    • @Bw70316 使用dd($finalRecords)查看您的数据
    • 我找到了解决方案。感谢您的帮助和意见!
    【解决方案3】:

    我能够通过 laravel FB 页面上的一些帮助来解决这个问题....

    控制器

                $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();
               }
    

    查看

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

    注意:不确定是否需要带有空数组的变量,但帮助我编写此代码的人包括了它们。

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 2011-12-09
      • 2020-08-21
      • 2018-08-05
      • 2019-05-14
      • 1970-01-01
      • 2022-01-05
      • 2021-09-07
      • 2011-05-08
      相关资源
      最近更新 更多