laravel - Laravel 验证器问题
问题描述
使用sqlsrv
驱动程序,我在具有已定义架构的数据库上使用 Laravel Validator 时遇到问题。
使用该行访问任何模型上的数据库都没有问题
protected $table = 'dba.users'
但是当我在验证器上使用它时
return Validator::make($data, [
'name' => 'required|string|max:255|unique:dba.users',
]);
它产生错误:
Database [dba] not configured.
我尝试使用
return Validator::make($data, [
'name' => 'required|string|max:255|unique:sqlrv.dba.users',
]);
但它产生
Invalid object name 'app.users'. (SQL: select count(*) as aggregate from
[app].[users] where [name] = test
从哪儿开始?
解决方案
如果这是您拥有的唯一数据库连接,则无需指定数据库,因此您可以执行以下操作:
return Validator::make($data, [
'name' => 'required|string|max:255|unique:users',
]);
但是,如果您使用多个数据库,则需要确保在config/database.php
文件中指定了这些数据库的名称。查看该文件并查看此处https://laravel.com/docs/5.6/database#using-multiple-database-connections。文档不是那么清楚,所以我将在下面更详细地概述它。
在您的database.php
文件中,您将找到一个connections
数组。像这样添加您的dba
连接:
'connections' => [
'dba' => [
'driver' => 'mysql',
'host' => env('DB_HOST_2', '127.0.0.1'),
'port' => env('DB_PORT_2', '3306'),
'database' => env('DB_DATABASE_2', 'forge'),
'username' => env('DB_USERNAME_2', 'forge'),
'password' => env('DB_PASSWORD_2', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
]
在您的.env
文件中设置上面显示的新值。
你的database.php
文件告诉 laravel 你有哪些数据库连接以及在哪里寻找它们。完成此操作后,您的验证器将在您指定数据库时知道在哪里查找。
推荐阅读
- sql - 在 INSERT 条件下循环
- scrapy - 即使 xpath 在 chrome 中正确,Scrapy shell 也会输出空列表。为什么?
- python - 如何使用删除顺序删除列表中的元素?
- javascript - ngx-charts-advanced-pie-chart 将我的 rest api 响应读取为 null
- php - Deployer [错误] 调用未定义的函数 Deployer\artisan()
- gitlab - 我的 appSettings.json 中的 Gitlab CI/CD 变量替换
- kotlin - Kotlin协程执行顺序?
- nginx - eks 上的多个入口控制器设置,不能一起工作
- c# - 如何为特定用户更新 Blazor UI?
- python - 将字节数组转换为png文件python