我需要 mysql insert ignore or/and on duplicate key update 功能,但遗憾的是 laravel 查询生成器不支持它,那么扩展 laravel(语法类或类似的东西)以实现这一目标的最佳方法是什么?
我已经用 insert ignore 而不是 insert 临时编辑了核心,它工作正常,但这显然不是正确的解决方案。
只是一个想法,你可以扩展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();
祝你好运 !