duxet/laravel-rethinkdb

Laravel 的 RethinkDB 驱动程序

3.0 2016-11-16 11:17 UTC

This package is auto-updated.

Last update: 2024-09-07 14:10:18 UTC


README

Total Downloads MIT License Build Status Coverage Status Scrutinizer Quality Score

Laravel 的 RethinkDB 驱动程序(支持 Eloquent)

感谢 @jenssegers 伟大的 laravel-mongodb 项目。我已经使用了他的测试和一些其他代码,因为这是一个支持其他 NoSQL 数据库的出色代码库。我希望他不会因此而生气;)

安装

要求。

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

  2. Laravel 5.2:此包旨在与 Laravel 5.2 一起使用,因此它不适用于 laravel 4.x。

安装

要完全安装此包,您需要手动将其添加到您的 composer.json 文件中,或者您可以使用以下命令执行

composer require "duxet/laravel-rethinkdb:dev-master"

这将安装包及其所有依赖项。

服务提供者

安装库后,您需要将 Service Provider 文件添加到您的 app.php 文件中,如下所示

duxet\Rethinkdb\RethinkdbServiceProvider::class,

在您的 providers 数组内部。

数据库配置

现在您已设置服务提供者,您需要在数据库连接数组的末尾添加以下配置数组

'rethinkdb' => [
    'name'      => 'rethinkdb',
    'driver'    => 'rethinkdb',
    'host'      => env('DB_HOST', 'localhost'),
    'port'      => env('DB_PORT', 28015),
    'database'  => env('DB_DATABASE', 'homestead'),            
]

添加后,您可以将环境文件配置如下

DB_HOST=localhost
DB_DATABASE=homestead
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 Users 迁移文件

这是一个示例,说明 Laravel Users 迁移文件是如何变成的

<?php

use duxet\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 News 模型类

这是一个示例,说明 Laravel 模型类是如何变成的

<?php

namespace App;

use duxet\Rethinkdb\Eloquent\Model;

class News extends Model
{
    //
}

更新模型类

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

Laravel用户模型类示例

这是laravel用户模型类的一个示例

use Illuminate\Auth\Authenticatable;
use duxet\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;
    
    //
}