我有一个具有灵活数据库结构的SaaS应用程序,因此它的字段必然会发生变化,特别是考虑到它有一个Json字段(对于从应用程序的客户端创建的任何额外数据库结构),包括基于关系的字段。因此,帐户表可以动态创建employee_id字段,因此需要动态访问关系
我需要基于这种动态关系的EagerLoad模型。如果我有这样的事情:
// Account Model
public function employee(){
return $this->belongsTo(App\Employee);
}
这很容易。但我所拥有的是:
public function modelBelongsTo(){
return $this->belongsTo($dynamicClassName, $dynamicForeignKey);
}
现在,如果我急切地加载它,我将在密钥modelBelongsTo
上获得具有相关Employee的Account Model实例。这就是Eloquent Names基于eagerload功能的方式。但在此之后我再次无法使用此功能来加载第二个模型,因为它只会覆盖modelBelongsTo
键上的结果。
1)我可以以某种方式改变laravel的流程以使用我提供的名称吗?
或
2)我是否可以动态编写函数来克服这个问题,以便我即时编写员工函数?
或
3)最坏情况场景:我遍历所有记录以单独重命名密钥,因为我使用的是分页,它不会超过10条记录。