Optimization 将多行提取到单个集合对象中-Laravel 4
以下是我的控制器功能的外观:Optimization 将多行提取到单个集合对象中-Laravel 4,optimization,laravel,laravel-4,Optimization,Laravel,Laravel 4,以下是我的控制器功能的外观: public function index() { $fixtures = Fixture::with('homeTeam', 'awayTeam')->get(); $homeTeams=$fixtures->fetch('home_team'); $awayTeams=$fixtures->fetch('away_team'); return View::make('fixtures',array('ho
public function index()
{
$fixtures = Fixture::with('homeTeam', 'awayTeam')->get();
$homeTeams=$fixtures->fetch('home_team');
$awayTeams=$fixtures->fetch('away_team');
return View::make('fixtures',array('home'=>$homeTeams,'away'=>$awayTeams));
}
我的目标是将视图中的团队打印为:
Home - Away
India - Australia
Sri Lanka - England
and so on......
我认为:
@foreach($home as $homeT)
<li>{{$homeT->tname}}</li>
@endforeach
我发现以下错误:
数组到字符串的转换
我的问题:
如上所述,将这两行(homeTeam和awayTeams)发送到视图并打印它们的最佳方式是什么
编辑1
以上foreach循环正确打印HomeTeam,如果我使用:
<li> {{$homeT['tname'] </li>
下面是模型:Fixture.php
class Fixture extends Eloquent {
protected $table='fixture';
protected $primaryKey = 'fid';
public function homeTeam()
{
return $this->belongsTo('Team','home_team_id');
}
public function awayTeam()
{
return $this->belongsTo('Team','away_team_id');
}
}
因此,在应用下面@hayhorse的解决方案时,我得到了大量不需要的数据,即id和地点等。
如果可以避免这种情况,并且只能获取团队名称,那就太好了,否则会有太多不需要的数据被发送到视图。在homeT之前缺少一个
$
:
@foreach($home as $homeT)
<li>{{homeT->tname}}</li>
@endforeach
@foreach($home作为$homeT)
{{homeT->tname}
@endforeach
应该是
@foreach($home as $homeT)
<li>{{$homeT->tname}}</li>
@endforeach
@foreach($home作为$homeT)
{{$homeT->tname}
@endforeach
在homeT之前缺少一个$
:
@foreach($home as $homeT)
<li>{{homeT->tname}}</li>
@endforeach
@foreach($home作为$homeT)
{{homeT->tname}
@endforeach
应该是
@foreach($home as $homeT)
<li>{{$homeT->tname}}</li>
@endforeach
@foreach($home作为$homeT)
{{$homeT->tname}
@endforeach
试试这个:
控制器
public function index()
{
$fixtures = Fixture::with('homeTeam', 'awayTeam')->get();
return View::make('fixtures', array('fixtures'=>$fixtures));
}
看法
@foreach($fixture作为$fixture)
{{$fixture->homeTeam->tname}-{{$fixture->awayTeam->tname}
@endforeach
试试这个:
控制器
public function index()
{
$fixtures = Fixture::with('homeTeam', 'awayTeam')->get();
return View::make('fixtures', array('fixtures'=>$fixtures));
}
看法
@foreach($fixture作为$fixture)
{{$fixture->homeTeam->tname}-{{$fixture->awayTeam->tname}
@endforeach
我猜$home
和$away
在您的真实代码中没有设置错误?(您的代码示例应该将$homeTeams
和$awayTeams
而不是$home
和$away
传递到fixtures
视图中,除非省略了一些代码。)此外,{$homeT['tname']}
工作正常,只是意味着传递的是数组数组,而不是对象集合?如果这是有效的,为什么不使用{$homeT['tname']}
呢?@fideloper是的,它有效,我想知道是否可以同时获取这两行并在视图中访问它们:{{$fixture->homeTeam->tname}-{$fixture->awayTeam->tname}
我猜$home
和$away
在您的真实代码中没有设置错误?(您的代码示例应该将$homeTeams
和$awayTeams
而不是$home
和$away
传递到fixtures
视图中,除非省略了一些代码。)此外,{$homeT['tname']}
工作正常,只是意味着传递的是数组数组,而不是对象集合?如果这是有效的,为什么不使用{$homeT['tname']}
呢?@fideloper是的,它有效,我想知道是否可以同时获取这两行并在视图中访问它们:{{$fixture->homeTeam->tname}-{$fixture->awayTeam->tname}
Vinetrok,这是正确的答案。你可能想考虑接受它吗?是的,看来,我没有机会尝试它实际上是由于一些问题。我很快就会接受的。嗯,我尝试了上述方法,它确实奏效了。不过,我可能有一个性能问题。我已经在问题的最新编辑中对此进行了描述。尽管如此,这个答案是正确的,但我想看看是否有进一步优化的方法。我怀疑你在更新中描述的那种微观优化是否会对你的网站的效率产生任何实际影响。Vinetrok,这是正确的答案。你可能想考虑接受它吗?是的,看来,我没有机会尝试它实际上是由于一些问题。我很快就会接受的。嗯,我尝试了上述方法,它确实奏效了。不过,我可能有一个性能问题。我已经在问题的最新编辑中对此进行了描述。尽管如此,这个答案是正确的,但我想看看是否有进一步优化的方法。我怀疑你在更新中描述的那种微观优化会对你网站的效率产生任何实际影响。