Laravel - 访问数据透视表中的附加列数据

1 pivot-table laravel eloquent laravel-4

我的数据透视表中有一个附加列,我需要访问它。

架构:

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();
});
Run Code Online (Sandbox Code Playgroud)

标准模态

public function alerts()
{
    return $this->belongsToMany('Alert')->withPivot('viewed')->withTimestamps();
}
Run Code Online (Sandbox Code Playgroud)

控制器

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

看法:

  @foreach($matches as $match)
    <td>{{$match->viewed}}</td>
  @endforeach
Run Code Online (Sandbox Code Playgroud)

该视图不会返回错误,但它只是不显示任何内容。“已查看”列只有 1 或 0。

提前谢谢了。

luk*_*ter 5

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

public function alerts(){
    return $this->belongsToMany('Alert')->withPivot('viewed');
}
Run Code Online (Sandbox Code Playgroud)

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

@foreach($matches as $match)
    <td>{{$match->pivot->viewed}}</td>
@endforeach
Run Code Online (Sandbox Code Playgroud)

参考