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