FLOWERS开发日志(四)汉化与多数据库配置

laravel 自带模板汉化#

laravel 自带的 auth 模板是英文的。有大神开发了全套英文汉化 ServiceProvier。
安装语言包:

$ composer require "overtrue/laravel-lang:~3.0"

在 config/app.php 中的 providers 数组中:

Illuminate\Translation\TranslationServiceProvider::class,

替换为:

Overtrue\LaravelLang\TranslationServiceProvider::class,

完成后,刷新,看到英文已经被翻译好了。

FLOWERS开发日志(四)汉化与多数据库配置

多数据库配置#

考虑到后期的分库的问题,摸索了一下多数据库模式的操作。

###.env 配置
把原来的 DB_CONNECTION=mysql 这段复制一份,改成其他的数据库配置,如下代码所示:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=flower
DB_USERNAME=homestead
DB_PASSWORD=secret

DB_HOST_BBS=127.0.0.1
DB_PORT_BBS=3306
DB_DATABASE_BBS=bbs
DB_USERNAME_BBS=homestead
DB_PASSWORD_BBS=secret

然后在 config/database 中的 connections 数组中添加配置:

'mysql_bbs' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST_BBS', '127.0.0.1'),
            'port' => env('DB_PORT_BBS', '3306'),
            'database' => env('DB_DATABASE_BBS', 'forge'),
            'username' => env('DB_USERNAME_BBS', 'forge'),
            'password' => env('DB_PASSWORD_BBS', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

migration#

migration 部分,这样配置:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateTestsTable extends Migration
{
    protected $connection = 'mysql_bbs';
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection('mysql_bbs')->create('tests', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

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

model#

我们执行 php artisan migrate 迁移以上代码中的 migration 配置。然后,创建一个 model:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Test extends Model
{
    //
    protected $connection = 'mysql_bbs';
}

最后,我们在 tinker 中做一下测试。先执行 php artisan tinker 进入交互模式,然后执行:

>>> App\Test::create();
=> App\Test {#4083
     updated_at: "2020-09-14 18:42:46",
     created_at: "2020-09-14 18:42:46",
     id: 2,
   }
>>> 

插入成功。在 bbs 数据库中可以看到新增加的数据行了:

FLOWERS开发日志(四)汉化与多数据库配置

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。