0

mysql の挿入無視または重複キー更新機能が必要ですが、残念ながらlaravelsクエリビルダーはそれをサポートしていません。これを達成するためにlaravel(文法クラスまたは類似のもの)を拡張する最良の方法は何ですか?

insert の代わりに insert ignore を使用してコアを一時的に編集しましたが、正常に動作しますが、それは明らかに適切な解決策ではありません。

4

1 に答える 1

1

DatabaseManagerアイデアだけで、クラスを拡張できます。

use Illuminate\Database\DatabaseManager;

class MyDatabase extends DatabaseManager {
     //... add your code
}

次に、クラスのサービスプロバイダーを作成する必要があります。http: //laravel.com/docs/ioc#service-providersをご覧ください。

すなわち

use Illuminate\Support\ServiceProvider;

class MyDatabaseServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('mydb', function()
        {
            return new MyDatabase();
        });
    }

}

次にサービスプロバイダーconfig/app.phpを追加し、要素を開いてプロバイダーに追加します

'providers' => array(
     //...
    'Your\Namespase\MyDatabaseServiceProvider'

今では、次のように使用できると確信しています

$app->get('/', function () use ($app) {
   $app['mydb']->table('your_table')->get(); //this will work !

} );

または、必要に応じてファサードを使用できます。最初にファサード ファイルを作成します。

class MYDB extends Facade {

   protected static function getFacadeAccessor() { return 'mydb'; }

}

エイリアスを追加config/app.php

'aliases' => array(
    //...
    'MYDB'            => 'your\namespace\Facade\MYDB',

これで、次を使用できます。

MYDB::table('your table')->get();

幸運を !

于 2013-10-22T11:54:09.833 に答える