在非laravel项目中引入Illuminate\Database

1、在composer.json加上对应的包,composer update

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "require": {
    "illuminate/database": "^6.18",
    "doctrine/dbal": "^2.10",
    "illuminate/events": "^6.18"
  },
  "repositories": {
    "packagist": {
      "type": "composer",
      "url": "https://mirrors.aliyun.com/composer/"
    }
  }
}

2、建立配置文件在项目的入口文件引入,我是叫orm.php,我在入口文件index.php的地方就是

1
include "orm.php";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;
$admin = [
    'driver'    => 'mysql',
    'host'      => '',
    'database'  => '',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
];
$sdk = [
    'driver'    => 'mysql',
    'host'      => '',
    'database'  => '',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
];

$capsule = new Capsule;
// 创建链接(多库配置)
$capsule->addConnection($admin,'default');  
$capsule->addConnection($sdk,'sdk');
// 数据库查询事件
$capsule->setEventDispatcher(new Dispatcher(new Container));

// 设置全局静态可访问
$capsule->setAsGlobal();

Capsule::connection('default')->listen(function ($query) {
    //这里是执行sql后的监听回调方法
    $sql = vsprintf(str_replace("?", "'%s'", $query->sql), $query->bindings) . " [" . $query->time . ' ms] ';
    // 把SQL写入到日志文件中
    Debug::log($sql, 'info');
});
// 启动Eloquent
$capsule->bootEloquent();

3、在使用到的地方

引入类

1
use Illuminate\Database\Capsule\Manager as DB;

sql操作

1
 $items = DB::connection('sdk')->table('user')->where('id', '>', '1')->get();