Я создаю пакет, который в значительной степени полагается на морфинг многих отношений. Как обычно с этим отношением, требуется определить отношения как так:Laravel 5 Метод динамической морфологии
public function foos()
{
return $this->morphToMany('App\Models\Foo', 'barable');
}
Это, очевидно, работает нормально, и нет никаких проблем здесь.
Дело в том, что существует много таких отношений, которые необходимо определить. И я бы хотел просто пропустить их и создать их автоматически, чтобы упростить настройку пакета.
Я попытался следующие:
public function __get($name)
{
if($name == 'foos') {
return $this->morphToMany('App\Models\Foo', 'barable');
}
}
Это не инициирует запрос для извлечения данных. Он вызывается, но он не возвращает данные.
Функция __call показалась мне логичной, но это просто ломает Laravel. Насколько я могу судить, он поднимает все, что называется в классе.
Альтернативой теперь является включение признака и включение программиста в эти отношения в файл для публикации, но это просто неправильно.
Любые предложения?