将 html 表单中的空字符串更新为 NULL

2024-01-01

我正在 Laravel 中构建一个网站。

我在 InnoDB 表之间设置了外键约束。

我的问题是,如果我不在选择框中选择值,框架会尝试在表中插入或更新带有“”(空字符串)的记录。这会导致 MySQL 错误,因为它无法在子表中找到等效的外键值。

除了检查每个字段之外,是否有一些优雅的方法可以强制在外键字段中插入 NULL?或者强制 MySQL 接受 '' 作为“空”外键引用?

换句话说:我有一个 SELECT 字段,其中第一个 OPTION 为空。我将选择的选项保留为空白。当我提交时,会传递一个空字符串“”。在MySQL中,显然我可以执行UPDATE table SETforeignKey=NULL,但不能执行UPDATEtableSETforeignKey=''。它不会“转换”为 NULL。我可以逐一检查字段,但是将每个外键的 '' 转换为 NULL,也许在数组中指定所有字段,我想知道是否有更简化的方法来执行此操作。

也许必须更改我的数据库模式中的 ON UPDATE 操作(未设置)?

Edit:列确实接受 NULL 值,问题在于框架或 MySQL 如何处理来自 HTML 的“空值”。我并不是建议MySQL“做错了”,这也是合乎逻辑的,问题是你不能在HTML中设置“NULL”值,我想知道是否有一种优雅的方法来管理这个问题MySQLor拉拉维尔。

换句话说,我是否必须手动指定外键并相应地构造我的查询,或者是否有另一种强大而优雅的方法?

到目前为止,我的模型 MyModel 的代码:

$obj = new MyModel;
$obj->fill(Input::all())); // can be all() or a subset of the request fields
$obj->save();

至少从 Laravel(和 Eloquent 模型)的 v4 开始,您可以使用 mutators(又名 setter)来检查值是否为空并将其转换为 null,并且该逻辑很好地放入模型中:

class Anything extends \Eloquent {
    // ...
    public function setFooBarAttribute($value) {
        $this->attributes['foo_bar'] = empty($value)?null:$value;
    }
}

您可以查看关于变异者的文档 http://laravel.com/docs/eloquent#accessors-and-mutators.

我已以此为导向github问题 https://github.com/FrozenNode/Laravel-Administrator/issues/475(不完全相关,但仍然)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 html 表单中的空字符串更新为 NULL 的相关文章

  • 无法创建可锁定文件 - Laravel 8 和 PHP 8

    我被困在 Laravel 项目中 我已经使用 Laravel 很多年了 但从未发生过这种情况 我正在使用 Vagrant 一如既往 并且只在 PHP 8 中发生这种情况 使用 php 7 X 的其他项目不会发生这种情况 USER 和 GRO
  • MySQL 8 用逗号分割字符串并将其转换为JSON ARRAY

    我有以下字符串 a b c d 我想将它转换成一个 json 数组 像这样 a b c d MySQL 8 有什么函数可以实现这个功能吗 Try SELECT CAST CONCAT REPLACE a b c d AS JSON See
  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • Laravel - 保存在存储文件夹中的图像不向用户显示

    我有这段代码可以将图像保存在 storage app uploads 文件夹中 image main Image where property id id gt get file request gt file file destinati
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • 如何在自定义组件中使用 Vue.js 插件?

    我需要输出一个表格及其内容 可以通过 Ajax 进行更新 所以我打算使用vue tables 2 https github com matfish2 vue tables 2 https github com matfish2 vue ta
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • Laravel 5 命名空间

    我刚刚下载了 Laravel 5 并开始迁移到它 但是 我发现需要使用命名空间really恼人的 除了让我的代码变得混乱之外 我觉得我没有从中得到太多东西 如何禁用命名空间要求 我认为您不应该禁用或删除名称空间 命名空间的主要原因是避免与同
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • Laravel 迁移错误 :: PDOException,找不到驱动程序

    我正在尝试制作 Laravel 但在迁移时卡住了 当我在终端中输入 php artisan migrate 时 显示 PDOException 错误 附上我的终端和 phpinfo 的屏幕截图 这是什么问题 我该如何解决这个问题 我正在使用
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • Laravel 验证 如果勾选复选框,则需要输入文本?

    我一直在阅读 Laravel 验证文档 我不清楚如何结合两个规则 例如
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • Blade中的Section和Stack有什么区别?

    我们可以使用一个section定义一些 HTML 然后yield那在其他地方 那么为什么我们有堆栈呢 https laravel com docs 5 2 blade stacks https laravel com docs 5 2 bl

随机推荐

  • InvalidOperationException:内容类型不正确:ASP.NET Core

    我有两种表格 一种用于登录 一种用于注册 它们都在同一视图上并使用同一模型 我正在使用控制器处理表单提交 我在访问登录页面时收到以下错误 InvalidOperationException Incorrect Content Type 完整
  • Custom.css 在 32.0.1700.76 m Google Chrome 更新中停止工作

    我使用此网站上的 Google 开发者工具的一些主题 http devthemez com themes chrome developer tools http devthemez com themes chrome developer t
  • 如何将元素数组转换为 NodeList?

    首先第一件事是 这不是问如何将 NodeList 转换为数组 这是相反的 为了保持一致性 我想创建一个返回 NodeList 的函数 就像document querySelectorAll does 这是我当前的代码 var toNodeL
  • 如何使用reason-react有条件地在JSX中设置HTML属性?

    我想渲染一个 HTML 复选框 其选中状态由数据控制 给出一个接收一个无状态组件item type label string checked bool Like so let component ReasonReact statelessC
  • 删除 MySQL 表中的重复条目[重复]

    这个问题在这里已经有答案了 我有一个有几千行的表 该表包含两列 name and email 我有几个重复的行 例如 约翰 史密斯 电子邮件受保护 cdn cgi l email protection 约翰 史密斯 电子邮件受保护 cdn
  • 有没有办法影响 AlchemyAPI 情感分析

    我使用 AlchemyAPI 进行文本分析 我想知道是否有办法影响 API 结果或根据要求对其进行微调 我试图分析互联网上可用的不同呼叫中心对话 了解情绪 即客户是否不满意 生气 因此对话是否消极 对于十分之九的对话 它给出的情绪是积极的
  • 无法解析:com.google.code.gson:gson.2.2.2

    我将项目从 eclipse 导入到 android studio 并在将项目与 gradle 文件同步后收到上述消息 我是 android studio 的新手 不知道如何解决这个错误 以下是 Gradle 文件 apply plugin
  • Bitbucket 上的 Git:始终要求输入密码,即使在上传我的公共 SSH 密钥后也是如此

    我上传了我的 ssh id rsa pub to Bitbucket 的 SSH 密钥 https bitbucket org account ssh keys as 解释了 https confluence atlassian com b
  • Windows Phone 8.1 设备 (Lumia 930) 和 VS2013 调试仅适用于禁用 WiFi

    当 Windows Phone 8 1 应用程序启动进行部署和调试时 VS2013 中出现错误 错误 1 错误 DEP6100 发生以下意外错误 在 boostrapping 阶段 连接到设备 SmartDeviceException 部署
  • Flutter 自动完成功能在 VSCode 中不适用于包

    我将整个 flutter 项目移动到一个新文件夹 一切运行正常 自动完成功能适用于 flutter 中的构建文件 例如 Container Column 但是当我尝试使用包 例如提供者 时 我需要进入 pub dev 页面并复制导入 手动导
  • word2vec - 什么是最好的?添加、连接或平均词向量?

    我正在研究循环语言模型 为了学习可用于初始化语言模型的词嵌入 我使用 gensim 的 word2vec 模型 训练后 word2vec 模型为词汇表中的每个单词保存两个向量 单词嵌入 输入 隐藏矩阵的行 和上下文嵌入 隐藏 输出矩阵的列
  • Hadoop集群节点数

    我正在尝试设置 Hadoop 多节点集群 当我启动集群时 这是我在控制台中的响应 hduser hadoop master usr local hadoop usr local hadoop sbin start dfs sh Starti
  • Base64 图像上传到 S3 时损坏

    router post image multipartMiddleware function req res var file name req body name var data req body data return s3fsImp
  • 如何验证空手道 BDD 响应中收到的日期

    我的响应中有两个字段 响应中有两个参数 日期1 2018年12月18日 日期2 2018年11月23日 我想测试 id date1 是否小于今天的日期 并且 date2 小于请求参数中的某个其他日期 我不知道如何在空手道模式验证中执行此操作
  • 浮动操作按钮阻止其他组件

    谷歌的新材料设计建议使用浮动操作按钮来吸引用户注意屏幕上的主要操作 列表视图中有很多这样的例子 现在 假设您的列表视图有足够的项目来填满屏幕 从而无法滚动 如果您的列表项具有用户可以与之交互的某个组件 例如开关或最喜欢的星星 则浮动操作按钮
  • 如何将大型 JSON 文件分割成块并使用 GSON 进行排序

    我有一个巨大的 JSON 文件 名为 Something json 文件大小为 20 MB 我正在用 GSON 读这篇文章 它可以在标准 Android Nexus 5X 上读取 Json 示例 country UA name Hurzuf
  • 在Python中进行刷新时如何防止BrokenPipeError?

    问 有没有办法使用flush True为了print 函数没有得到BrokenPipeError https docs python org 3 library exceptions html BrokenPipeError 我有一个脚本p
  • 如何提示用户保存自动 Excel 文件

    我已经搜索过 但我发现没有任何内容直接符合我要查找的内容 或者也许我的搜索没有符合单词组合 在 C 中 我使用 Interop Excel 创建了一个 Excel 工作表 在其中插入一些数据并创建一个图表 当我执行 xlWorkBook S
  • std::tuple 和 std::pair 支持聚合初始化吗?

    聚合初始化 http en cppreference com w cpp language aggregate initialization除其他外还需要没有用户提供的构造函数 But std tuple and std pair对有一大套
  • 将 html 表单中的空字符串更新为 NULL

    我正在 Laravel 中构建一个网站 我在 InnoDB 表之间设置了外键约束 我的问题是 如果我不在选择框中选择值 框架会尝试在表中插入或更新带有 空字符串 的记录 这会导致 MySQL 错误 因为它无法在子表中找到等效的外键值 除了检