Laravel - 访问数据透视表中的其他列数据

时间:2014-11-08 19:47:11

标签: laravel laravel-4 eloquent pivot-table

我在数据透视表中有一个额外的列,我需要访问它。

架构:

Schema::create('alert_criteria', function(Blueprint $table)
{
    $table->increments('id');
    $table->integer('alert_id')->unsigned()->index();
    $table->foreign('alert_id')->references('id')->on('alerts')->onDelete('cascade');
    $table->integer('criteria_id')->unsigned()->index();
    $table->foreign('criteria_id')->references('id')->on('criterias')->onDelete('cascade');
    $table->integer('viewed');
    $table->timestamps();
});

标准模式

public function alerts()
{
    return $this->belongsToMany('Alert')->withPivot('viewed')->withTimestamps();
}

控制器

public function getMatches()
{
    $matches = Criteria::find(Auth::user()->id)
    ->alerts()
    ->get();
}

查看:

  @foreach($matches as $match)
    <td>{{$match->viewed}}</td>
  @endforeach

视图不会返回错误,但它不会显示任何内容。 &#39;观看&#39;列只是1或0。

非常感谢提前。

1 个答案:

答案 0 :(得分:2)

要访问其他数据透视表列,请将此添加到您的关系声明中:

public function alerts(){
    return $this->belongsToMany('Alert')->withPivot('viewed');
}

要访问它,您必须使用pivot属性

@foreach($matches as $match)
    <td>{{$match->pivot->viewed}}</td>
@endforeach

Reference