Я работаю с пакетом 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
и расширить модель, которая поставляется вместе с пакетом, но напрасно.
Итак, как мне расширить модель, которая поставляется вместе с пакетом для добавления к нему, чтобы он отображался в элементе управления версиями, и я не редактирую файлы поставщика?
Редактирование файлов поставщиков – плохая идея. Если вы по какой-то причине должны их редактировать, я бы рекомендовал развернуть пакет и отредактировать его в разветвленной версии, а затем обновить файл-композитор, чтобы вытащить пакет из вашей собственной вилки. Но я бы не рекомендовал делать это в таком случае.
Вместо этого вы должны опубликовать файл конфигурации пакета и изменить модель, которую он должен использовать.
Это делается с помощью artisan vendor:publish
команду в терминале.
В конфигурационной папке должен быть создан новый файл конфигурации для пакета брандмауэра.
Тогда все, что вам нужно сделать, это создать свою собственную модель и изменить свойство firewall_model
в файле конфигурации:
https://github.com/antonioribeiro/firewall/blob/master/src/config/config.php