0

我需要 mysql insert ignore or/and on duplicate key update 功能,但遗憾的是 laravel 查询生成器不支持它,那么扩展 laravel(语法类或类似的东西)以实现这一目标的最佳方法是什么?

我已经用 insert ignore 而不是 insert 临时编辑了核心,它工作正常,但这显然不是正确的解决方案。

4

1 回答 1

1

只是一个想法,你可以扩展DatabaseManager类。

use Illuminate\Database\DatabaseManager;

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

接下来,您必须为您的课程创建服务提供者,请查看: http: //laravel.com/docs/ioc#service-providers

IE

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 回答