gpt4 book ai didi

mysql - 如何扩展 Laravel 查询生成器?

转载 作者:行者123 更新时间:2023-11-29 13:30:37 26 4
gpt4 key购买 nike

我需要 mysql 插入忽略或/和重复键更新功能,但遗憾的是 laravel 查询生成器不支持它,那么扩展 laravel (语法类或类似的东西)以实现此目的的最佳方法是什么?

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

最佳答案

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

use Illuminate\Database\DatabaseManager;

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

接下来,您必须为您的类(class)创建服务提供者,请查看: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();

祝你好运!

关于mysql - 如何扩展 Laravel 查询生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19512934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com