我正在使用nWidarts/laravel-modules
软件包来扩展应用程序中的某些功能。要将模块与核心应用程序集成在一起,需要将父实体“粘合”到模块子实体。这里的技巧是模块无法向核心模型添加关系,因此必须“动态”检索该关系。
目前,我使用以下定义实现此目标,并将其加载到模块配置中。
return [
'client' => [
'notes' => function ($self) {
return $self->hasMany('Modules\Notes\Entities\Note');
}
],
在核心中,我们在BaseModel中有一个辅助函数,该函数可以使用以下命令自动解析关系
<?php
public function __call($method, $params)
{
$entity = strtolower(class_basename($this));
if ($entity) {
$configPath = "modules.relations.$entity.$method";
if (config()->has($configPath)) {
$function = config()->get($configPath);
return $function($this);
}
}
return parent::__call($method, $params);
}
这一切都很好,但是,由于在配置文件中使用了闭包,因此我们失去了缓存配置的功能。我需要重构配置文件,以将关系类型(hasOne,hasMany等)与模型的FQN一起传回。
我需要解决此问题并启用配置缓存的建议。