【发布时间】:2021-10-09 17:10:10
【问题描述】:
在config/database.php (Laravel 8) 中配置如下:
'connections' => [
'my_db' => [
'driver' => 'mysql',
'host' => 'xx.xx.xxx.xxx',
'port' => '3306',
'database' => 'Sqlxxx',
'username' => 'Sqlxxxx',
'password' => 'passxxx',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
],
'other_db' => [
...
],
],
我尝试保存一些数据,但它不起作用。
DB::connection('my_db')->beginTransaction();
$data = [];
$data["A"] = "a";
$data["B"] = "b";
$pdo = DB::connection('my_db')->getPdo();
if ($pdo) {
DB::connection('my_db')
->table('my_table')
->insert($data);
}
DB::connection('my_db')->commit();
我指定与数据库 my_db 的连接有效,因为我可以从中获取数据。我的印象是它可以读取数据但不能保存它们。
编辑:
- 我在 config/database.php 中定义了多个连接
- my_db 是我项目之外的数据库
- 没有错误信息;只是一个空白页(
APP_DEBUG设置为true和APP_ENV设置为"local") - 我在脚本开头添加了
DB::connection('my_db')->beginTransaction();,但无济于事。 - 以下方式也不起作用:
DB::connection('my_db')->insert('insert into my_table (A, B) values (?, ?)', ['a', 'b']); - 我吓坏了。更新有效,插入无效。这有效:
DB::connection('my_db')->table('my_table')->where('id', '1')->update(['a' => '111']);
【问题讨论】:
-
你能edit你的问题并添加错误信息吗?
-
@shaedrich 我找不到!脚本返回给我一个空白页......
-
为什么不用播种机?
-
最好将所有这些 cmets 作为Edit 包含在您的问题中????我们必须要求这么多澄清的事实意味着您的问题还不够清楚。
-
这是
DB外观的insert()方法的文档,它与 Eloquent/Builder 版本(我链接的)相似,但不完全相同。尽管如此,它应该像你写的那样工作,除非DB::connection()使它无效。我尽量避免使用这些语句,因为它们与多种数据库类型不兼容(MySql、Postgres 等具有不同的语法),其中 Eloquent/Builder 适用于所有(嗯,大多数)数据库类型。
标签: php database laravel laravel-query-builder