php - Laravel 在不可为空的字段中插入 0 并且没有默认值
问题描述
我只在一个项目中遇到了这个奇怪的问题。目前可以执行此代码,Laravel 将转换为以下 SQL:
$elTicket = documentos_venta::create([
]);
SQL:
insert into `documentos_ventas` (`updated_at`, `created_at`) values (?, ?) ["2021-05-13 13:42:14","2021-05-13 13:42:14"]
结果:SQL语句结果
桌子:
这样做的问题是它不尊重数据库表中的不可为空的字段,它会自动用 0 填充不可为空的整数,用 null 填充 varchar。在项目中插入任何模型时发生。
忘了说在 mariaDB 中执行 sql 语句按预期失败
解决方案
我发现了问题。在 config/database.php 里面 MYSQL 连接的配置不正确
不正确:
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => false,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
严格值是假的,它必须是真的。我不知道为什么设置为false
推荐阅读
- ios - 已弃用的 CNCopyCurrentNetworkInfo 的 iOS 替换(可用性 - iOS 4.1–14.0)
- mongodb - 有没有办法在 bulk_write 上运行“解释”
- javascript - Google表格:根据单元格值将一行数据移动到另一张表格
- tfs - 迁移后无法摆脱 TFS2018 中的工作区问题
- azure - 需要有关 Azure 存储的信息 - 同步数据复制
- r - 在 r 中的 ggplot2 中添加第 4 个特征到平铺图
- xamarin - /Users/runner/work/1/s/***_xamarin.Android/obj/Release/lp/89/jl/res/values/values.xml(4): > error APT1000: Found tag id where item is expected
- svg - svg 视图中的 Adobe Illustator 错误,如何修复
- android - 如何使用 Paging 3 库将元数据与分页列表一起传递
- machine-learning - 在不同大小的组中聚类