Как расширить и изменить модель поставщика в Laravel 5?

Я работаю с пакетом antonioribeiro / firewall в моем приложении Laravel 5, и я использую базу данных для хранения списка заблокированных IP-адресов.

Я успешно установил его, и я могу использовать модель PragmaRX\Firewall\Vendor\Laravel\Models\Firewall которой она относится.

Проблема в том, что я работаю с базой данных с несколькими арендаторами, где в основном у каждого арендатора есть своя собственная база данных, а модели для этих арендаторов используют свойство $connection для указания подключения tenant и за кулисами. Я изменяю конфигурацию подключения арендатора соответственно к запросу.

Теперь модель, которая поставляется с пакетом, выглядит так:

 <?php namespace PragmaRX\Firewall\Vendor\Laravel\Models; /** * Part of the Firewall package. * * NOTICE OF LICENSE * * Licensed under the 3-clause BSD License. * * This source file is subject to the 3-clause BSD License that is * bundled with this package in the LICENSE file. It is also available at * the following URL: http://www.opensource.org/licenses/BSD-3-Clause * * @package Firewall * @author Antonio Carlos Ribeiro @ PragmaRX * @license BSD License (3-clause) * @copyright (c) 2013, PragmaRX * @link http://pragmarx.com */ use Illuminate\Database\Eloquent\Model as Eloquent; class Firewall extends Eloquent { protected $table = 'firewall'; protected $guarded = array(); } 

Я добавил protected $connection = 'tenant'; чтобы он работал, но я редактирую файлы поставщиков, которые не отображаются в элементе управления версиями. Поэтому, будучи начинающим разработчиком, я пытаюсь выяснить, как каким-то образом расширить эту модель, а затем установить свойство $connection .

Я попытался создать новую модель в пространстве имен App и расширить модель, которая поставляется вместе с пакетом, но напрасно.

Итак, как мне расширить модель, которая поставляется вместе с пакетом для добавления к нему, чтобы он отображался в элементе управления версиями, и я не редактирую файлы поставщика?

Related of "Как расширить и изменить модель поставщика в Laravel 5?"

Редактирование файлов поставщиков – плохая идея. Если вы по какой-то причине должны их редактировать, я бы рекомендовал развернуть пакет и отредактировать его в разветвленной версии, а затем обновить файл-композитор, чтобы вытащить пакет из вашей собственной вилки. Но я бы не рекомендовал делать это в таком случае.

Вместо этого вы должны опубликовать файл конфигурации пакета и изменить модель, которую он должен использовать.
Это делается с помощью artisan vendor:publish команду в терминале.
В конфигурационной папке должен быть создан новый файл конфигурации для пакета брандмауэра.
Тогда все, что вам нужно сделать, это создать свою собственную модель и изменить свойство firewall_model в файле конфигурации:

https://github.com/antonioribeiro/firewall/blob/master/src/config/config.php