Я просто хочу создать приложение, используя Slim Framework и RedBeanPHP4, я использую mysql и имя базы данных «test_api», БД была создана с пустой таблицей. Насколько мне известно, при использовании redbeanphp мы могли бы создать таблицу на -fly. и вот мой короткий код:
<?php
require 'vendor/autoload.php';
// DB
require 'db/rb.php';
R::setup('mysql:host=localhost;dbname=test_api', 'root','mypassword');
R::freeze(true);
// SLIM
$app = new \Slim\Slim();
$app->get('/post', function () use ($app) {
$post = R::dispense('post');
$post->text = 'Hello World';
$id = R::store($post);
echo $id;
});
$app->run();
?>
но я получил такую ошибку:
Slim Application Error
The application could not run because of the following error:
Details
Type: RedBeanPHP\RedException\SQL
Message: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test_api.post' doesn't exist
File: /srv/http/prj/lpse2/db/rb.php
Line: 631
Может ли кто-нибудь здесь, что поможет мне решить эту проблему?
У меня была такая же проблема с RedBeanPHP (4.2)
RedBeanPHP\Facade::dispense('MY_TABLE')
Invalid type: MY_TABLE
… даже если таблица уже существует в БД.
Я недавно нашел «решение»:
Замените эту часть кода:
if ( !preg_match( '/^[a-z0-9]+$/', $type ) ) {
throw new RedException( 'Invalid type: ' . $type );
}
этим:
if ( preg_match( '/^[0-9]+$/', $type ) ) {
throw new RedException( 'Invalid type: ' . $type );
}
IMO, исключение, поднятое RB, происходит из заглавных букв названия таблицы.
Если вы все еще хотите, чтобы ReadBean изменил схему на (создать таблицу на лету), тогда он должен быть в fluid
Режим. Это режим по умолчанию, но вы явно изменили его R::freeze(true);
Когда режим установлен на freeze
он не может изменить схему. Вам нужно только установить R::freeze(true);
в производстве после создания схемы.