繁体   English   中英

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

[英]How to extend and modify a vendor model in Laravel 5?

我正在使用我的Laravel 5应用程序中的antonioribeiro /防火墙软件包,我正在使用该数据库来存储要阻止的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命令完成的。
应在config文件夹中创建防火墙程序包的新配置文件。
然后,您需要做的就是创建自己的模型并更改配置文件中的firewall_model属性:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM