在非 laravel 项目中使用 laravel 的特性 3: 数据库 database & Eloquent ORM

eloquent orm && illuminate database

composer 引入相关包

composer require illuminate/database
composer require doctrine/dbal
composer require illuminate/events

建立配置文件,并在项目的入口文件引入

例如 orm.php, 入口文件 index.php 的地方就是 include "orm.php";

<?php

use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;

// 自己配置
$admin = [
    'driver' => 'mysql',
    'host' => '127.0.0.1',
    'database' => 'test',
    'username' => 'root',
    'password' => 'secret',
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'port' => '3306',
    '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();

使用 Query Builder index/orm.php

<?php

require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../orm.php';

use App\Eloquent\User;
use Illuminate\Database\Capsule\Manager as DB;

$users = DB::connection('default')->table('users')->where('id', '>', 1)->take(2)->get();
dd($users);

使用 Eloquent ORM

新建 Eloquent Model src/Eloquent/User.php

<?php

namespace App\Eloquent;

use Illuminate\Database\Eloquent\Model as Eloquent;

class User extends Eloquent
{
    protected $table = 'users';
}

index/orm.php

<?php

require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../orm.php';

use App\Eloquent\User;
use Illuminate\Database\Capsule\Manager as DB;

$users = User::all();
dd($users);

命令行开启服务 php -S localhost:8000 并访问 http://localhost:8000/index/orm.php 即可。

项目目录结构

.
├── composer.json
├── composer.lock
├── config
├── helpers
│   └── laravel_helpers.php
├── index
│   ├── dd.php
│   ├── orm.php
│   └── validator.php
├── lang
│   └── zh_cn
│       └── validation.php
├── orm.php
└── src
    ├── Eloquent
    │   └── User.php
    └── Handlers
        └── Validator.php

参考 致谢

  1. 在非 laravel 项目中引入 Illuminate\Database
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!