brunojk / laravel-rethinkdb
RethinkDB 驱动适配器用于 Laravel
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.2.*
- phpunit/phpunit: 5.4.6
- psr/log: 1.0.0
This package is not auto-updated.
Last update: 2024-09-14 19:09:32 UTC
README
RethinkDB 适配器用于 Laravel (支持 Eloquent)
这是对 laravel-rethinkdb 的小幅修改,并添加了新的功能,如 belongsToMany 关系和用户/密码连接!
感谢 @jenssegers 的伟大 laravel-mongodb 项目。我使用了他的测试和一些其他代码,因为它是支持其他 NoSQL 数据库的出色代码库。我希望他不会因此生气;)
该项目针对即将发布的 Laravel 5,因此可能不与 L4 兼容。
安装
需求。
-
Rethinkdb : 确保您已成功安装 rethinkdb,您可以参考 rethinkdb 文档 了解如何安装 rethinkdb 的完整说明。
-
Laravel 5.2 : 此包旨在与 laravel 5.2 一起使用,因此它不与 laravel 4.x 兼容。(也适用于 Laravel 5.4 的一些错误)
安装
要完全安装此包,您必须手动将其添加到您的 composer.json
文件中,或者您可以执行以下命令
composer require "brunojk/laravel-rethinkdb:dev-master"
这将安装该包及其所有必需的包。
服务提供者
安装库后,您需要将 Service Provider
文件添加到您的 app.php
文件中,如下所示
brunojk\LaravelRethinkdb\RethinkdbServiceProvider::class,
在您的 providers
数组中。
数据库配置
现在您已经设置了服务提供者,您需要在数据库连接数组末尾添加以下配置数组
'rethinkdb' => [
'name' => 'rethinkdb',
'driver' => 'rethinkdb',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 28015),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'admin'),
'password' => env('DB_PASSSWORD', ''),
]
添加后,您可以将环境文件配置如下
DB_HOST=localhost
DB_DATABASE=homestead
DB_CONNECTION=rethinkdb
DB_USERNAME=admin
DB_PASSWORD=
但是您始终可以将 DB_HOST
更新为指向您安装 rethinkdb 的 IP 地址。
迁移
创建迁移文件
您可以使用以下命令轻松创建迁移文件,该命令将为您创建用于创建用户表和使用包模式而不是 Laravel 模式的迁移文件
php artisan make:rethink-migration Users --create
(在 Laravel 5.4 中不可用)
请注意,您可以使用与 make:migration
中相同的选项使用 make:rethink-migration
,因为它基于 laravel make:migration
请注意,Laravel Schema API 并未完全实现。例如,使用 increments 的 ID 列将不会是自动增加的无符号整数,而是将是一个 UUID,除非明确设置。最简单的解决方案是在 RethinkDB 中保持 UUID 的使用,禁用 Laravel 中的增量 ID,最后在 Laravel 中实现 UUID 的使用。
运行迁移
这里不会有任何变化,您将保持使用您熟悉的同一组 laravel 命令来执行迁移。
Laravel 用户迁移文件的示例
这是 laravel 用户迁移文件如何成为的示例
<?php
use brunojk\LaravelRethinkdb\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');
}
}
模型
创建模型类
您可以使用以下命令轻松创建一个模型类,该命令将为您创建它并使用RethinkDB模型包而不是Laravel模型。
php artisan make:rethink-model News
请注意,您可以使用与make:model
相同的选项来使用make:rethink-model
,因为它基于Laravel的make:model
。
Laravel News模型类的示例
这是一个Laravel模型类如何变成的示例。
<?php
namespace App;
use \brunojk\LaravelRethinkdb\Eloquent\Model;
class News extends Model
{
//
}
更新模型类
请注意,Laravel在初始安装期间生成的任何模型都需要手动更新才能正常工作。例如,User模型扩展了Illuminate\Foundation\Auth\User
,它进一步扩展了Illuminate\Database\Eloquent\Model
而不是\brunojk\LaravelRethinkdb\Eloquent\Model;
。需要从User模型中移除导入Illuminate\Foundation\Auth\User
,并替换为\brunojk\LaravelRethinkdb\Eloquent\Model;
,并将任何在Illuminate\Foundation\Auth\User
中实现且在User模型中需要的接口和关联特性迁移到User模型。
Laravel User模型类的示例
这是Laravel User模型类如何变成的示例。
use Illuminate\Auth\Authenticatable;
use \brunojk\LaravelRethinkdb\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;
//
}