基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
Laravel Eloquent ORM 连接 OceanBase 数据库示例程序
更新时间:2026-04-09 14:12:04
功能适用性
Laravel 适用于 OceanBase 数据库 MySQL 模式。
Laravel 是一个优雅的 PHP Web 开发框架,其内置的 Eloquent ORM 提供了简洁的 ActiveRecord 实现,使数据库操作变得简单直观。
本文将介绍如何使用 Laravel Eloquent ORM 连接 OceanBase 数据库,实现创建表、插入数据和查询数据等基本操作。
前提条件
- 您已安装 PHP 8.0 或更高版本。
- 您已安装 Composer 包管理工具。
- 您已安装 OceanBase 数据库并且创建了 MySQL 模式租户。
- 您已获取 OceanBase 数据库连接串。
操作步骤
- 获取 OceanBase 数据库连接串
- 创建 Laravel 项目并安装依赖
- 配置数据库连接
- 创建模型和控制器
- 编写数据库操作代码
- 运行程序并验证结果
步骤一:获取 OceanBase 数据库连接串
联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接串。
obclient -h$host -P$port -u$user_name -p$password -D$database_name
参数说明:
$host:提供 OceanBase 数据库连接 IP。OceanBase 数据库代理(OceanBase Database Proxy,ODP)连接方式使用的是一个 ODP 地址;直连方式使用的是 OBServer 节点的 IP 地址。$port:提供 OceanBase 数据库连接端口。ODP 连接的方式默认是2883,在部署 ODP 时可自定义;直连方式默认是2881,在部署 OceanBase 数据库时可自定义。$database_name:需要访问的数据库名称。$user_name:提供租户的连接账户。ODP 连接的常用格式:用户名@租户名#集群名或者集群名:租户名:用户名;直连方式格式:用户名@租户名。$password:提供账户密码。
注意
连接租户的用户需要拥有该数据库的 CREATE、INSERT、UPDATE 和 SELECT 权限。更多有关用户权限的信息,请参见 MySQL 模式下的权限分类。
更多连接串的信息,请参见 通过 OBClient 连接 OceanBase 租户。
示例如下:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
步骤二:安装 Laravel 和依赖
使用 Composer 创建新的 Laravel 项目:
composer create-project laravel/laravel laravel-oceanbase cd laravel-oceanbase验证安装:
php artisan --version
步骤三:配置数据库连接
编辑 config/database.php 文件,配置 MySQL 连接选项:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '2881'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
步骤四:创建模型和控制器
创建用户模型
app/Models/User.php:<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Schema; class User extends Model { protected $table = 'users'; protected $fillable = ['username', 'email', 'age']; /** * 创建用户表 */ public static function createTable() { if (!Schema::hasTable('users')) { Schema::create('users', function ($table) { $table->id(); $table->string('username', 100); $table->string('email', 100)->unique(); $table->integer('age')->nullable(); $table->timestamps(); }); return true; } return false; } }
步骤五:编写数据库操作代码
创建控制器
app/Http/Controllers/UserController.php:<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { // 创建用户表 public function __construct() { User::createTable(); } // 创建用户 public function create(Request $request) { $user = User::create([ 'username' => $request->input('username'), 'email' => $request->input('email'), 'age' => $request->input('age'), ]); return response()->json($user); } // 查询用户 public function show($id) { $user = User::findOrFail($id); return response()->json($user); } // 更新用户 public function update(Request $request, $id) { $user = User::findOrFail($id); $user->update([ 'username' => $request->input('username', $user->username), 'email' => $request->input('email', $user->email), 'age' => $request->input('age', $user->age), ]); return response()->json($user); } // 删除用户 public function delete($id) { $user = User::findOrFail($id); $user->delete(); return response()->json(['message' => '用户删除成功']); } // 查询所有用户 public function index() { $users = User::all(); return response()->json($users); } }添加路由
routes/api.php:<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\UserController; // 手动添加 /api 前缀 Route::prefix('api')->group(function () { Route::get('/users', [UserController::class, 'index']); Route::post('/users', [UserController::class, 'create']); Route::get('/users/{id}', [UserController::class, 'show']); Route::put('/users/{id}', [UserController::class, 'update']); Route::delete('/users/{id}', [UserController::class, 'delete']); });修改
app/Providers/AppServiceProvider.php文件:<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Register any application services. */ public function register(): void { // } /** * Bootstrap any application services. */ public function boot(): void { //$this->loadRoutesFrom(base_path('routes/api.php')); } }
步骤六:运行程序并验证结果
启动开发服务器:
php artisan serve使用 API 工具(如 Postman)测试以下接口:
GET http://localhost:8000/api/users- 获取用户列表POST http://localhost:8000/api/users- 创建新用户GET http://localhost:8000/api/users/1- 获取指定用户PUT http://localhost:8000/api/users/1- 更新用户DELETE http://localhost:8000/api/users/1- 删除用户