phillx/lumen-rethinkdb

Lumen的RethinkDB适配器

3.0 2016-11-16 11:17 UTC

This package is not auto-updated.

Last update: 2024-10-02 19:36:14 UTC


README

This package is fork of duxet/laravel-rethinkdb with fix and how-to for Lumen 5.6 

安装

要求。

  1. Rethinkdb : 您需要确保已成功安装rethinkdb,您可以通过rethinkdb 文档了解如何安装rethinkdb的完整说明。

  2. Lumen 5.6

安装

安装的Composer命令

composer require "phillx/lumen-rethinkdb:dev-master"

这将安装该软件包以及所有其他所需软件包。

服务提供者

安装库后,您需要在您的bootstrap/app.php文件中注册Service Provider文件,如下所示

$app->register(Phillx\Rethinkdb\RethinkdbServiceProvider::class);
$app->withEloquent();

数据库配置

现在您需要创建内容类似于的文件config/database.php

  <?php
  return [
      'default' => 'rethinkdb',
      'connections' => [
              'rethinkdb' => [
                  'name'      => 'rethinkdb',
                  'driver'    => 'rethinkdb',
                  'host'      => env('DB_HOST', 'localhost'),
                  'port'      => env('DB_PORT', 28015),
                  'database'  => env('DB_DATABASE', 'homestead'),
              ]
          ],
      'migrations' => 'migrations',
  ];

创建后,您可以直接编辑您的.env文件

DB_HOST=localhost
DB_DATABASE=rethinkdb_name
DB_CONNECTION=rethinkdb

但您始终可以将DB_HOST更新为指向您安装rethinkdb的IP地址。

迁移

创建迁移文件

您可以使用以下命令轻松创建迁移文件,这将为您创建一个用于创建用户表并使用包模式而不是Laravel模式的迁移文件

php artisan make:rethink-migration Users --create

请注意,您可以使用与make:migration相同的选项使用make:rethink-migration,因为它是基于laravel的make:migration

请注意,Laravel Schema API尚未完全实现。例如,使用自增的ID列将不会是自增的无符号整数,而是UUID,除非显式设置。最简单的解决方案是在RethinkDB中保持UUID的使用,关闭Laravel中的自增ID,最后在Laravel中实现UUID的使用。

运行迁移

这里不会有任何变化,您将继续使用您习惯执行的相同Laravel命令来运行迁移。

Laravel用户迁移文件的示例

这是laravel用户迁移文件如何变为的示例

<?php

use Phillx\Rethinkdb\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
        });
    }

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

模型

创建模型类

您可以使用以下命令轻松创建模型类,这将为您创建它并使用包模型而不是Laravel模型

php artisan make:rethink-model News

请注意,您可以使用与make:model相同的选项使用make:rethink-model,因为它是基于laravel的make:model

Laravel新闻模型类的示例

这是laravel模型类如何变为的示例

<?php

namespace App;

use \Phillx\Rethinkdb\Eloquent\Model;

class News extends Model
{
    //
}

更新模型类

请注意,Laravel在初始安装期间生成的任何模型都需要手动更新才能正常工作。例如,User模型扩展了Illuminate\Foundation\Auth\User,该扩展进一步扩展了Illuminate\Database\Eloquent\Model而不是\duxet\Rethinkdb\Eloquent\Model;。需要从User模型中删除导入Illuminate\Foundation\Auth\User,并用\duxet\Rethinkdb\Eloquent\Model;替换,并将需要实现的所有接口和相关特性从Illuminate\Foundation\Auth\User迁移到User模型。

Laravel用户模型类的示例

这是laravel用户模型类如何变为的示例

use Illuminate\Auth\Authenticatable;
use \Phillx\Rethinkdb\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword;
    
    //
}