Laravel Eager加载与附加的关系 - > where()

时间:2017-12-08 14:46:02

标签: php laravel laravel-5 eloquent laravel-5.4

这是我模型中的关系方法:

public function relation()
{
    return $this->belongsTo('App\Table', 'table_2_id', 'table_2_id')->where('table_1_id', $this->table_1_id);
}

因此,上面的模型和Table2都有相同的列,但是有可能有很多条目,所以我想过滤掉两个表共享的第二列{{1} }。

它似乎在命令行上完美运行,但是当急切加载时,关系是空的。

如果我从关系方法中删除了额外的table_1_id,那么急切加载就会起作用。

我渴望加载的方式是做

->where()

我也试过

->with('relation.nestedRelation');

我只是尝试将其添加为属性,看看是否有帮助,但仍然没有快乐。

1 个答案:

答案 0 :(得分:1)

您可以使用whereColumn()功能:

->whereColumn('table_1.table_1_id', 'table_2.table_1_id')

或者您可以使用:

public function filterRelation(){
     return $this->relation->where('table_1_id', $this->table_1_id);

}