【问题标题】:RedBean 4.3 "A database has already be specified for this key"RedBean 4.3“已经为此键指定了数据库”
【发布时间】:2015-09-24 15:30:56
【问题描述】:

我制作了一个小型网站,并决定使用Valitron 库作为我网站的验证部分。我注意到没有一种“唯一”方法可以返回传递的值是否已经存在于数据库中。我很快添加了这个方法,但不喜欢推荐这样做。我添加了这个:

protected function validateUnique($field, $value, $table)
{
    $model = new Model();
    return $model->unique($table[0], $field, $value);
}

到主 Validator 类。问题是,它正在工作,但仅限于一个领域。如果我在验证过程中的 2 个或更多字段上使用它,我会收到此错误

致命错误:未捕获的异常“RedBeanPHP\RedException”带有消息“已为此键指定了数据库。”在 C:\dev\htdocs\Shop\vendor\gabordemooij\redbean\RedBeanPHP\Facade.php:295 堆栈跟踪:#0 C:\dev\htdocs\Shop\vendor\gabordemooij\redbean\RedBeanPHP\Facade.php(216 ): RedBeanPHP\Facade::addDatabase('default', 'mysql:host=127....', 'root', '', false) #1 C:\dev\htdocs\Shop\app\libs\Model .php(18): RedBeanPHP\Facade::setup('mysql:host=127....', 'root', '') #2 C:\dev\htdocs\Shop\vendor\vlucas\valitron\src \Valitron\Validator.php(429): Shop\libs\Model->__construct() #3 [内部函数]: Valitron\Validator->validateUnique('email', 'email.example@g...', Array ) #4 C:\dev\htdocs\Shop\vendor\vlucas\valitron\src\Valitron\Validator.php(885): call_user_func(Array, 'email', 'email.example@g...', Array) #5 C:\dev\htdocs\Shop\app\controllers\AuthController.php(68): Valitron\Validator->validate() #6 [内部函数]: Shop\controllers\AuthController->postRegister() #7 C :\dev\htdocs\Shop\app\libs\Bootstrap.php(64): 在 C:\dev\htdocs\Shop\vendor\gabordemooij\redbean\RedBeanPHP\Facade.php 第 295 行

我是第一次使用 RedBean 和 Valitron,但我无法说出导致问题的原因。

【问题讨论】:

  • 你能解决这个问题吗?

标签: php validation redbean


【解决方案1】:

我遇到了同样的错误。

已经为此键指定了一个数据库。在 /var/www/html...

我已经设置了一个数据库并想连接另一个数据库,然后我使用 R::addDatabase() 函数添加新数据库和 R::selectDatabase() 函数来选择该数据库。

代码是

define('dsn2', 'pgsql:host=localhost;dbname=mydb';
R::addDatabase('DB2', dsn2, 'dbusers', 'dbpasss');
R::selectDatabase('DB2');

【讨论】:

    猜你喜欢
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2017-07-17
    相关资源
    最近更新 更多