这是我模型中的关系方法:
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');
我只是尝试将其添加为属性,看看是否有帮助,但仍然没有快乐。
答案 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);
}