我有三个表例程,度量和池,它们的数据透视表是measure_routine,它还存储了一个pool_id,它引用了pool表中的一个池。设置如下:
子程序:
id
value
date
time
emp_id (To reference which employee conducted the task)
测量
id
title
池
id
name
和数据透视表,measure_routine:
routine_id
measure_id
pool_id
到目前为止,我已在我的模型中定义:
Routine.php
class Routine extends Eloquent
{
public function measurements
{
return $this->belongsToMany('Measurement', 'measure_routine', 'routine_id', 'measure_id', 'pool_id')->withPivot('pool_id');
}
}
Measurement.php
class Measurement extends Eloquent
{
public function routines()
{
return $this->belongsToMany('Routine', 'measure_routine')->withPivot('pool_id');
}
}
Pool.php
class Pool extends Eloquent
{
public function measurement_routine()
{
return $this->hasMany('measure_routine', 'pool_id');
}
}
我想知道的是如何使用eloquent来提取pool_id(或者可能是池表中的池名称)?
目前,我已尝试在控制器中使用$ data = Routine :: has('测量') - > get(),然后尝试{{$ data-> pivot- > pool_id}}在视图中,但导致尝试获取非对象错误的属性。
答案 0 :(得分:1)
你可以尝试这样的事情(从集合和枢轴中获取第一个项目):
$data = Routine::has('measurements')->get();
$data->first()->measurements->first()->pivot->pool_id;
因为,$data
是由Routine
返回的get()
的集合,所以第一个项目有另一个measurements
集合,所以再次获得第一个measurements
first()
您可以从集合中再次使用pivot->pool_id
,然后访问view
,这样您也可以在@foreach($data as $routine)
{{ $routine->property }}
@foreach($routine->measurements as $measurement)
{{ $measurement->property }}
{{ $measurement->pivot->property }}
@endforeach
@endforeach
中使用循环,如下所示:
{{1}}