2016-11-15 7 views
3

クライアントに応じて異なるタイプのDBを扱う必要があります。laravel 5:ファサードを延長する

私はというMyCADFacadeと呼ばれるファサードを作成しました。ここで自分の機能を呼び出すことができます。例えば

MyDBFacade::createDBUser("MyUser"); // will create a DB user whatever I'm using Postgres or SQL Server 

が、私は私自身の機能を追加し、DB::createUser("MyUser")を呼び出すことができますように、フレームワークファサードDB ::を延長する可能性がありますか?

何か手がかりや考えがありがたいです。

お疲れ様でした。

答えて

3

あなただけ

'DB' => Illuminate\Support\Facades\DB::class, 

から

'DB' => App\Facades\MyDBFacade::class, 

そして、それすべてに、config/app.phpに単一の行を変更する必要があるのは、あなたがapp/Facades/MyDBFacade.php

<?php 

namespace App\Facades; 

use Illuminate\Support\Facades\DB; 

class MyDBFacade extends DB 
{ 
    // ... 
} 

にカスタムファサードを定義するとしましょう今すぐ動作するはずです。

1

あなたはこのようなあなたのファサードを拡張/作成することができます:あなたのapp/config/app.phpに置き換える(または新しいものとして追加します)、その後

<?php namespace YourNameSpace\Facades; 

class MyDBFacade extends Illuminate\Support\Facades\DB { 

     /** 
     * Create your custom methods here... 
     */ 
     public static function anyMethod($active) 
     { 
      /// do what you have to do 
     } 

} 

そして:

'aliases' => array(
    'MyDBFacade' => 'YourNameSpace\Facades\MyEventFacade::class', 
), 

はでcomposer dump-autoloadを実行することを忘れないでください終わり。

希望すると便利です。

関連する問題