xbu3n0/laravel-sybase

Laravel 10.x 的基于 Sybase 的 Eloquent 模块扩展

4.0.5 2024-09-27 17:53 UTC

README

Packagist Version PHP from Packagist Packagist GitHub contributors GitHub

  • 启用使用多种类型的字段。
  • 使用默认的 eloquent:与 odbc 和 dblib 兼容!
  • 迁移!(进行中 - Work in Progress)

安装

请在您的 composer.json 文件的 require 部分添加以下内容

Laravel >=7.x

"xbu3n0/laravel-sybase": "~4.0"

通过执行以下命令更新包依赖

composer update

将以下条目添加到 config/app.php 文件的 providers 数组中,在 Laravel 5.5 或更高版本中为可选

Uepg\LaravelSybase\SybaseServiceProvider::class,

将以下条目添加到 config/app.php 文件的 aliases 数组中,在 Laravel 5.5 或更高版本中为可选

'UepgBlueprint' => Uepg\LaravelSybase\Database\Schema\Blueprint::class,

使用以下设置更新您的 config/database.php 的默认驱动程序,针对 sybase 或您的自定义 odbc。以下是一个示例

<?php

...

return [
    ...

    'connections' => [
        ...

        'sybase' => [
            'driver' => 'sybasease',
            'host' => env('DB_HOST', 'sybase.myserver.com'),
            'port' => env('DB_PORT', '5000'),
            'database' => env('DB_DATABASE', 'mydatabase'),
            'username' => env('DB_USERNAME', 'user'),
            'password' => env('DB_PASSWORD', 'password'),
            'charset' => 'utf8',
            'prefix' => '',
            'cache' => true // By default it caches on all connections, if you want some connection not remembered assign `false` (Recommended when modification is performed on tables frequently [development])
        ],

        ...
    ],

    ...
]

使用以下设置更新您的 .env,针对 sybase 或您的自定义 odbc。以下是一个示例

...

DB_CONNECTION=sybase
DB_HOST=sybase.myserver.com
DB_PORT=5000
DB_DATABASE=mydatabase
DB_USERNAME=user
DB_PASSWORD=password

...

配置 freetds 驱动程序

在 Linux 系统中,驱动程序版本必须在 freetds.conf 文件中设置为正确使用 charset pages。

文件通常位于 /etc/freetds/freetds.conf。以下是一个示例,在全局部分设置配置

[global]
    # TDS protocol version
    tds version = 5.0

配置数据库和应用程序之间的字符集

为了配置数据库和应用程序之间的字符集,在 .env 文件中添加字段 SYBASE_DATABASE_CHARSETSYBASE_APPLICATION_CHARSET,以下是一个示例

SYBASE_DATABASE_CHARSET=CP850
SYBASE_APPLICATION_CHARSET=UTF8

配置缓存

由于库在收到请求时始终查询表信息,因此可以使用缓存来避免过多的查询。

为了使用缓存,将字段 SYBASE_CACHE_TABLESSYBASE_CACHE_TABLES_TIME 添加到 .env 文件中,以下是一个示例

SYBASE_CACHE_TABLES=true
SYBASE_CACHE_TABLES_TIME=3600 # cache table information by `3600` seconds

设置使用数值数据类型

在迁移文件中,您必须将 use Illuminate\Database\Schema\Blueprint; 替换为 use Uepg\LaravelSybase\Database\Schema\Blueprint;。以下是一个示例

<?php

use Illuminate\Support\Facades\Schema;
// use Illuminate\Database\Schema\Blueprint;
use Uepg\LaravelSybase\Database\Schema\Blueprint; // or "use UepgBlueprint as Blueprint"
use Illuminate\Database\Migrations\Migration;

class CreateTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('table_name', function (Blueprint $table) {
            $table->numeric('column_name', length, autoIncrement);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('table_name');
    }
}