Laravel访问几个表

时间:2015-11-30 07:43:13

标签: php laravel laravel-5 laravel-5.1

我在访问与多个表相关的数据时遇到问题,这里是我的代码:

<table class="table table-striped">
    <thead>
        <th>Ejercicio</th>
        <th>Unidad</th>
        <th>Descripcion</th>
        <th>Tipo actividad</th>
        <th>Operaciones</th>
    </thead>
    @foreach($exercises as $exercise)
    <tbody>
        <td>{{$exercise->name}}</td>
        <td>{{$exercise->unit}}</td>
        <td>{{$exercise->description}}</td>
        <td>{{$exercise->activity_id}}</td>
        <td>
            <?php echo link_to('exercise/edit/'.$exercise->id, $title = 'Editar', $attributes = array('class' => 'btn btn-primary'), $secure = null); ?>                
        </td>
    </tbody>
    @endforeach
</table

在第<td>{{$exercise->activity_id}}</td>行上这只是另一个名为activity_type的表的外键,它有一个id和一个名字,所以我想要显示的是具有此id的名称。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

首先在你的基础模型上写一个关系。这里我给你一个属于关系的例子

public function ActivityRelation()
{
    return $this->belongsTo('App\ActivityType', 'id', 'activity_id');
}

然后就可以像那样使用

{{$exercise->ActivityRelation->name}}

答案 1 :(得分:0)

您需要在模型中建立关系。

在你的Exercise.php中

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Exercise extends Model
{
    public function activity_type()
    {
      return $this->belongsTo('App\ActivityType','activity_type');
    }
}

在你的ActivityType.php中,在你的情况下并不需要这个,但如果你想获得反向关系。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ActivityType extends Model
{
    public function exercises()
    {
      return $this->hasMany('App\Exercise');
    }
}

之后,您可以通过以下方式访问“活动”属性:

<td>{{$exercise->activity_type->name}}</td>