雄辩,数据透视表数据

时间:2014-03-31 09:36:50

标签: php laravel eloquent

我有三个表例程,度量和池,它们的数据透视表是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}}在视图中,但导致尝试获取非对象错误的属性。

1 个答案:

答案 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}}