如何在Laravel 5中扩展和修改供应商模型?

3
我正在使用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命名空间中创建一个新模型,并扩展随包装提供的模型,但没有成功。
那么,我该如何扩展随包装提供的模型以添加内容,以便它出现在版本控制中且不必编辑供应商文件?
1个回答

4
编辑供应商文件是一个不好的主意。如果你因为某些原因必须编辑它们,我建议分叉该软件包并在分叉版本中进行编辑,然后更新composer文件以从自己的分叉中拉取软件包。但在这种情况下,我不建议这样做。
相反,您应该发布软件包配置文件并更改它应该使用的模型。 这可以通过在终端中使用“artisan vendor:publish”命令来完成。 防火墙软件包的新配置文件应该创建在您的“config”文件夹中。 然后,您只需要创建自己的模型并在配置文件中更改“firewall_model”属性即可。

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


谢谢你的帮助。我更新了我的问题,反映了我尝试做什么以及为什么它不起作用。有什么想法吗? - Rohan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接