2015-11-24 107 views
1

我在我的Laravel 5應用程序中使用包antonioribeiro/firewall,我正在使用數據庫來存儲要阻止的IP地址列表。如何在Laravel 5中擴展和修改供應商模型?

我已經成功安裝了它,我也可以使用它自帶的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命名空間中創建一個新模型,並擴展了隨軟件包一起提供的模型,但徒勞無功。

那麼,如何擴展包附帶的模型以便在版本控制中顯示並且我不編輯供應商文件?

回答

2

編輯供應商文件是不好的想法。如果由於某種原因來編輯它們,我會建議分叉包並編輯分叉版本,然後更新composer文件以從您自己的叉子中取出包。但我不建議在這樣的情況下這樣做。

相反,您應該發佈包配置文件並更改它應該使用的模型。
這是通過在終端中使用artisan vendor:publish命令完成的。
防火牆包的新配置文件應該在config文件夾中創建。
然後,所有你需要做的在配置文件中創建自己的模型並更改firewall_model屬性:

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

+0

謝謝您的幫助。更新了我的問題,以反映我試圖做的以及爲什麼它不起作用。任何想法? – Rohan

+0

得到它的工作。愚蠢的錯誤。謝謝。 :) – Rohan