Генерация динамических отношений в Laravel

я использую nWidarts/laravel-modules пакет для расширения функциональности приложения. Для интеграции модулей Models с основным приложением требуется «приклеить» родительский объект к дочерним объектам модуля. Хитрость заключается в том, что модуль не может добавить отношение к базовой модели, поэтому он должен извлекать отношение «динамически».

На данный момент я достигаю этого, используя следующее определение, которое я загружаю в конфиг модуля.

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 модели.

Мне нужны предложения, чтобы обойти эту проблему и включить кэширование конфигурации.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]