通过laravel在数据透视表上获取字段

时间:2017-11-13 10:17:33

标签: database laravel blade

我在Laravel 5.5中有一个Pivot表M:N关系。

基本上我的数据结构是;

Table_A
---------
id
name


Table_A_has_table_B <pivot>
---------
table_a_id
table_b_id
other_field


Table_B
---------
id
name

在我的Table_A模型中

public function tableb()
{
    return $this->belongsToMany('App\Table_B', 'Table_A_has_table_B', 'table_a_id', 'table_b_id');
}

最后在我的刀片视图中我有这个

        @foreach ($tablea->tableb as $tbl)
          <p><a href="#">{{ $tbl->name }}</a></p>
          <p>{{ $tbl->other_field}}</p>
        @endforeach

除最后一行外似乎有效的所有

{{ $tbl->other_field}}

如何访问数据透视表上的字段和tableb上的数据。 数据透视表包含与tableb相关的当前视图相关的信息。

模式

    Schema::create('Table_A_has_table_B', function (Blueprint $table) {
        $table->integer('table_a_id')->unsigned()->index();
        $table->integer('table_b_id')->unsigned()->index();
        $table->integer('other_field')->unsigned();
        $table->primary(['table_a_id', 'competitor_id']);
        $table->foreign('table_a_id')->references('id')->on('table_a')->onDelete('cascade');
        $table->foreign('table_b_id')->references('id')->on('table_b')->onDelete('cascade');
    });

1 个答案:

答案 0 :(得分:2)

您必须在此关系中添加->withPivot('column1', 'column2');Reflections):

public function tableb()
{
    return $this->belongsToMany('App\Table_B', 'Table_A_has_table_B', 'table_a_id', 'table_b_id')->withPivot('other_field');
}

然后使用pivot这样的关键字:

{{ $tbl->pivot->other_field}}