Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过所有列的Laravel循环_Php_Laravel_For Loop_Foreach - Fatal编程技术网

Php 通过所有列的Laravel循环

Php 通过所有列的Laravel循环,php,laravel,for-loop,foreach,Php,Laravel,For Loop,Foreach,谁能帮我提高代码的效率。。。我试图展示每年的冠军,但我不知道如何循环每一列年份,而是年复一年地展示记录和冠军,我觉得这样做效率低下。。。。。这是我的控制器和视图 控制器 $seasonOnes= TeamRank::select('am') ->where('2016', 1) ->get(); $seasonTwos= TeamRank::select('am') ->where('2015', 1) ->get(); 看法 @if($seasentwos) @for

谁能帮我提高代码的效率。。。我试图展示每年的冠军,但我不知道如何循环每一列年份,而是年复一年地展示记录和冠军,我觉得这样做效率低下。。。。。这是我的控制器和视图

控制器

$seasonOnes= TeamRank::select('am')
->where('2016', 1)
->get();
$seasonTwos= TeamRank::select('am')
->where('2015', 1)
->get();
看法

@if($seasentwos)
@foreach($seasterwos作为$seasterwo)
2015年冠军
{{$seasiontwo->am}
@endforeach
@恩迪夫
我的数据库中每个季节都有一个for-each循环,每个列都是一年。说得很清楚,我的代码正在运行,但我觉得必须有一种方法来循环遍历每一列。我可以将一个变量设置为数组,并让它在不同的where语句中循环使用它吗

$champions = DB::table('your_table_name')
            ->groupBy('year_column_name')
            ->having('ranking_column_name', '=', 1)
            ->get();

您可以执行上述操作,然后执行@foreach($c)和rest。

这并不是您想要的,但这可能会帮助其他用户

永远不要将数据用作列名

在代码中,年是一列,因此每年都必须添加额外的列,或者换句话说,它是不可计数的。因此,永远不要创建一个便于人类阅读但不便于计算机阅读的表格。我猜你的桌子设计是这样的:

am     | 2005  | 2006 | 2007
name1  |  1    |  0   |  1
name2  |  0    |  1   |  0
name3  |  0    |  0   |  0
这是我推荐的设计:

am    | year 
name1 | 2005
name2 | 2006
name1 | 2007

假设您使用上一个方法创建,那么您可以访问如下数据:

am     | 2005  | 2006 | 2007
name1  |  1    |  0   |  1
name2  |  0    |  1   |  0
name3  |  0    |  0   |  0
控制器

查看

查看

@foreach($YearsWins作为$year=>$name)
{{$year}}获胜者
{{$name}
@endforeach

您的代码片段没有意义???特别是where条款。您正在从TeamRank模型中选择某个列,其中(什么等于什么)???你能清理一下吗??就像你的表格描述??季节栏或年份在哪里,我没有创建数据库,但每个栏都是一个季节,根据团队当年完成的位置排名1-63,所以“Where->‘2016’,‘1’意味着他们在该组中排名第一……我希望通过季节栏循环,并用“1”吸引团队“2016年冠军榜2015年是您的列名吗?是的,2005-2016年是您的列名names@SupunPraneth这些信息对你有帮助吗?我会马上试试。。。我确实对此进行了投票,但还没有足够的分数进行公开投票,很抱歉,这不会起作用,因为我的专栏是我的年份、2005年、2006年等。$seasons=([20062007])$seasonWins=[];foreach($seasures as$seasure){$seasurewins[$seasure]=GameData::select('team')->where('win','1')->where('stage','R16')->where('round','final')->where('elimination','1')->where('year',$seasure)->get()}我用这个来得到:[{“团队”:“06法国”}],我怎么才能让这些括号消失你是说$SECTIONWINS return[{“团队”:“06法国”}]?我在上面的评论中找到了答案,get();需要有价值(“团队”);你得到的是没有括号的球队。
am    | year  | win
name1 | 2005  | 1
name2 | 2006  | 1
name3 | 2007  | 0
$seasons= TeamRank::where('win', 1)->get();
@foreach($seasons as $win)
    <strong>{{$win->year}} Winner</strong>
    {{$win->am}}
@endforeach
$years = [2006,2007,2008];
$YearsWins = [];

foreach($years as $year){
 $YearsWins[$year] =  TeamRank::select('am')
  ->where($year, 1)
  ->first()->am;     
}
 @foreach($YearsWins as $year=>$name)        
        <strong>{{$year}} Winner</strong>
        {{$name}}
 @endforeach