我正在开发我的第一个项目laravel 5.1,一个家谱。对于家庭电影,我有一个视频表和一个人员表,我有person_video数据透视表来跟踪人们在每个视频中出现的内容。该表还有一个描述栏,用于提示“0:29-0:35,朝前,戴帽子”。
Video.php有:
var app = angular.module('myApp', ['ngMaterial']);
app.controller('myCtrl', function ($scope) {
$scope.tabs = [
{ title:'Page 1', content:'page1.html', thumbnail: 'http://i.imgur.com/2vl2MCk.png' },
{ title:'Page 1', content:'page2.html', thumbnail: 'http://i.imgur.com/GueewHO.png' }
];
});
然后当我显示给定视频中的人时,我有:
public function people()
{
return $this->belongsToMany('App\Person', 'person_video');
}
显示人员的信息,但对于数据透视表,它只为我提供了video_id和person_id的值:
@foreach($video->people as $person)
@include ('person.partials._person_link', ['person' => $person]):
{{$person->pivot}}
@endforeach
它不包括描述(或时间戳,不是我在这里需要的)。我怎么能有这样的描述出现?我希望能够使用{{$ person-> pivot-> description}},但是当我尝试时,没有什么可以显示它。
答案 0 :(得分:1)
请参阅LaravelDocs/Eloquent/Working with pivot tables:
默认情况下,只有
pivot
对象上的密钥才会出现。如果你的 数据透视表包含额外的属性,您必须在何时指定它们 定义关系:return $this->belongsToMany('Role')->withPivot('foo', 'bar');
现在
foo
和bar
属性可以在pivot
模型的Role
对象上访问。
所以你的Video::people()
看起来像这样:
public function people()
{
return $this->belongsToMany('App\Person', 'person_video')->withPivot('description');
}
然后,您应该可以从视图中访问{{$person->pivot->description}}
。