Я пытаюсь создать демо RethinkDB + Laravel после этого мерзавец и там я застрял в миграции моих миграций. Когда я пытаюсь мигрировать с помощью php artisan migrate
Я получил эту ошибку
[Symfony\Component\Debug\Exception\FatalThrowableError]
Type error: Argument 1 passed to Users::{closure}() must be an instance of duxet\Rethinkdb\Schema\Blueprint, instance of Illuminate\Database\Sc
hema\Blueprint given, called in /opt/lampp/htdocs/xyzz-laravel/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php on line 164
Я посмотрел на эту проблему в репо, но там она указана в ошибке и не была должным образом решена. Есть кто-нибудь, кто сталкивался с этим и имеет представление о том, как исправить эту ошибку?
вот моя миграция, которую я сделал.
<?php
use Illuminate\Support\Facades\Schema;
use duxet\Rethinkdb\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class Users extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users',function (Blueprint $table){
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
}
Заранее спасибо 🙂
Исправить эту проблему с помощью этой команды
php artisan migrate --database=rethinkdb
как у меня DB_CONNECTION='rethinkdb
в моем database.php
файл также вы найдете другие проблемы, когда вы получите пройти эту ошибку, и для этого я раздвоил это репо и просил тянуть запрос. До этого момента вы можете исправить это самостоятельно.
№ 1 а также Выпуск # 39 репо
Для этого вам нужно указать имя базы данных во время миграции, если у вас есть несколько БД, как по умолчанию это будет идти для Illuminate\Database\Schema\Blueprint
как это
php artisan migrate --database=rethinkdb
и тогда вы получите еще одну ошибку в Blueprint.php
указано здесь
[ErrorException] Объявление duxet \ RethinkDB \ Schema \ Blueprint :: index ($ column,
$ options = NULL) должен быть совместим с
Подсветка \ База данных \ Схема \ Blueprint :: index ($ столбцы, $ name =
NULL, $ алгоритма = NULL)
Вы можете исправить это, внеся изменения в Blueprint.php
заменив
public function index($column, $options = null)
от
public function index($columns, $name = NULL, $algorithm = NULL)
Выпуск № 2 а также Выпуск # 41 который гласит
[Symfony \ Component \ Debug \ Exception \ FatalErrorException] Уровень доступа к операторам duxet \ Rethinkdb \ Query \ Builder :: $ должен быть
public (как в классе Illuminate \ Database \ Query \ Builder)
Для исправления этой проблемы вы должны внести изменения в Builder.php
изменить $operator
тип доступа к public
от protected
public $operators = [
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
'rlike', 'regexp', 'not regexp',
'~', '~*', '!~', '!~*',
'contains', 'exists', 'type', 'mod', 'size',
];
Выпуск № 3
После этого вы найдете еще одну проблему, которая также есть репо Выпуск # 42
Для этого вы должны отредактировать Builder.php
где нужно заменить
public function groupBy()
от
public function groupBy(...$groups)
Выпуск № 4
Теперь, после исправления этой проблемы, вы столкнетесь с другой проблемой, которую я обнаружил сегодня, когда решал все эти проблемы.
[Symfony \ Component \ Debug \ Exception \ FatalThrowableError] Вызов функции-члена поддерживает SchemaTransactions () в null
Чтобы решить эту проблему, вам необходимо выполнить следующие шаги.
1. создать файл Grammar.php
в src/Schema
Пространство имен и вставьте этот код.
<?php
namespace duxet\RethinkDB\Schema;
use Illuminate\Database\Schema\Grammars\Grammar as BaseGrammar;
/**
* Class Grammar
*
* @package Moloquent\Schema
*/
class Grammar extends BaseGrammar {
}
Connection.php
во-первых, добавьте это
use duxet\Rethinkdb\Schema\Grammar;
а затем внутри public function __construct(array $config)
Добавь это
$this->schemaGrammar = new Grammar();
Все вышеперечисленные вещи я исправил в раздвоенная версия и сделал запрос на извлечение. Надеюсь, это поможет вам, и вам не нужно будет чесать голову, как я 🙂
ОБНОВИТЬ
13-го ноября запрос на получение ответа принят, и теперь вам не нужно будет делать следующие шаги, если вы обнаружили какие-либо проблемы, вы все равно можете попробовать.
Других решений пока нет …