Расширение модели проекта Laravel из пакета - PullRequest
0 голосов
/ 10 июля 2020

Я использую проекцию на основе Laravel под названием Akaunting .

В проекте есть модели, например у них есть модель App\Models\Banking\Account

I Я пытаюсь создать Package, и у меня есть доступ только для добавления кода в мой Package (не могу редактировать файлы в основном проекте Laravel.

Как я могу расширить модель App\Models\Banking\Account, чтобы что у него есть некоторые дополнительные методы; так что везде в проекте, где используется модель App\Models\Banking\Account, проект будет иметь доступ к моим добавленным методам.

В настоящее время единственный способ, которым я могу это сделать, - это используя class_alias, чтобы полностью заменить исходную модель моей собственной пользовательской моделью, добавив это к моему методу register() в моем поставщике услуг пакетов:

class_alias('Modules\BankingSortCode\Models\Account', 'App\Models\Banking\Account');

Но это означает, что мне нужно скопировать все содержимое из App\Models\Banking\Account в мою новую настроенную модель по адресу Modules\BankingSortCode\Models\Account

Проблема в том, что если исходный проект обновляет свою модель App\Models\Banking\Account, то любой, кто запускает мой пакет, не будет использовать обновленную модель (и, возможно,

Я хочу иметь возможность просто расширить исходную модель, но если я попытаюсь это сделать, я получаю исключение, которое я пытаюсь повторно объявить App\Models\Banking\Account (см. пример что я хочу делать ниже):

<?php
namespace Modules\BankingSortCode\Models;

class Account extends \App\Models\Banking\Account {
    public function getSortCodeFormatAttribute(){
        return implode("-", str_split($this->bank_sort_code, 2));
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...