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