duxet / laravel-rethinkdb
Laravel 的 RethinkDB 驱动程序
Requires
- php: >=5.5.0
- danielmewes/php-rql: ~2.3.0
- illuminate/container: >=5.0.0
- illuminate/contracts: >=5.0.0
- illuminate/database: >=5.0.0
- illuminate/support: >=5.0.0
Requires (Dev)
- codeclimate/php-test-reporter: 0.1.*@dev
- mockery/mockery: 0.9.*@dev
- orchestra/testbench: 3.0.*
- phpunit/phpunit: ~4.0
- psr/log: 1.0.0
README
Laravel 的 RethinkDB 驱动程序(支持 Eloquent)
感谢 @jenssegers 伟大的 laravel-mongodb 项目。我已经使用了他的测试和一些其他代码,因为这是一个支持其他 NoSQL 数据库的出色代码库。我希望他不会因此而生气;)
安装
要求。
-
RethinkDB:您需要确保已成功安装 RethinkDB,您可以参考 rethinkdb 文档 了解如何安装 RethinkDB 的完整说明。
-
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; // }