如何在Laravel 5中使用Eloquent中的枢轴值?

时间:2017-04-19 20:51:08

标签: laravel eloquent

例如table1和table2,并通过数据透视表连接在一起

table1: {
    pivot: {
        pivot_value1: 1
    },
    table2: {
        ....    
    }
}

代码:

table1::with(['table2' => function($q) {
    $q->where('table2_property1', 'pivot_value1') // <= how to access pivot value?
}])

1 个答案:

答案 0 :(得分:0)

在你定义关系的模型中,我们需要在建立关系时使用withPivot()函数,例如在我们的table1模型中;

class Table1 {
       public function table2() {
        return $this->belongsToMany('App\Table2')->withPivot('column1', 'column2');
      }
} 

通常在数据透视表中有三个cloumns,另外如果我们添加了额外的列,我们可以说是column1&amp; column2,我们可以得到这些额外的cloumns的值。第1栏和第1栏column2是数据透视表中的extras列, 要访问这些列值:

    $table1 = Table1::find(1);

     foreach ($table1->table2 as $table) {
      echo $table->pivot->column1;
      echo $table->pivot->column2;
     }

使用查询构建器的另一个解决方案:

Table1::whereHas('table2', function($q) {
    $q->where('table2_property1', 'pivot_value1');
})
->get();

以上代码只是一个例子,您可以修改它以完善您的需求。希望它有所帮助。