我在Laravel 5应用程序中使用包antonioribeiro/firewall,我使用数据库存储要阻止的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
命名空间中创建一个新模型,并扩展了包中附带的模型但是徒劳无功。
那么如何扩展包中附带的模型以添加到它中以便它显示在版本控件中而我不编辑供应商文件?
答案 0 :(得分:4)
编辑供应商文件是一个错误的想法。如果由于某种原因 HAVE 编辑它们,我建议分叉并编译分叉版本,然后更新composer文件以从您自己的fork中取出包。但我不建议在这样的情况下这样做。
相反,您应该发布包配置文件并更改它应该使用的模型
这是通过在终端中使用artisan vendor:publish
命令完成的
应在config
文件夹中创建防火墙软件包的新配置文件
然后,您需要做的就是创建自己的模型并更改配置文件中的firewall_model
属性:
https://github.com/antonioribeiro/firewall/blob/master/src/config/config.php