以下是我的控制器功能的样子:
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
会抛出错误:
尝试获取非对象的属性
如果我使用以下内容查看$homeT
包含的内容:
@foreach($home as $homeT)
<li>{{$homeT}}</li>
@endforeach
我收到以下错误:
数组到字符串转换
我的问题: 如上所述,将两个行(homeTeam和awayTeams)发送到视图并打印它们的最佳方法是什么?
如果我使用以上,foreach循环正确打印homeTeams:
<li> {{$homeT['tname'] </li>
数据库结构(必需部分)
//Table Name : team
tid PK
team_name (varchar)
tname (varchar)
team_details (varchar)
//Table Name : fixture
fid PK
rid FK
lid FK
home_team_id FK |_ both referenced to 'tid' from 'team' table
away_team_id FK |
date
venue
这是模型: 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和地点等。 如果可以避免并且只能获取团队名称,那就太好了,否则必须将大量不需要的数据发送到视图。
答案 0 :(得分:6)
试试这个:
控制器
public function index()
{
$fixtures = Fixture::with('homeTeam', 'awayTeam')->get();
return View::make('fixtures', array('fixtures'=>$fixtures));
}
视图
@foreach($fixtures as $fixture)
<li>{{ $fixture->homeTeam->tname }} - {{ $fixture->awayTeam->tname }}</li>
@endforeach
答案 1 :(得分:0)
在homeT之前缺少$
:
@foreach($home as $homeT)
<li>{{homeT->tname}}</li>
@endforeach
应该是
@foreach($home as $homeT)
<li>{{$homeT->tname}}</li>
@endforeach