如何使用 Laravel 5.1 将空字符串更改为 null?

2024-02-13

在使用 Laravel 5.1 时,我尝试在使用 Eloquent ORM 将每个值保存到数据库之前检查每个值。我的逻辑是,如果该值为空字符串,则首先修剪该值"",然后将其转换为null而不仅仅是一个空字符串。

建议我创建一个 Trait 来重写 setAttribute 方法。

这就是我所做的

我在名为的文件内有一个新文件夹“app\Traits”TrimScalarValues.php其中包含以下代码

<?php

namespace App\Traits;

trait TrimScalarValues
{
    public function setAttribute($key, $value)
    {
        if (is_scalar($value)) {
            $value = $this->emptyStringToNull(trim($value));
        }

        return $this->setAttribute($key, $value);
    }


    /**
     * return null value if the string is empty otherwise it returns what every the value is
     *
    */
    private function emptyStringToNull($string)
    {
        //trim every value
        $string = trim($string);

        if ($string === ''){
           return null;
        }

        return $string;
    }
}

最后我有一个app\Models\Account.php文件包含以下代码

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\industry;
use App\Traits\RecordSignature;
use App\Traits\TrimScalarValues;


class Account extends Model
{
    use RecordSignature, TrimScalarValues;
    /**
     * The database table used by the model.
     *
     * @var string
    */
    protected $table = 'accounts';

    protected $primaryKey = 'account_id';

    const CREATED_AT = 'created_on';

    const UPDATED_AT = 'modified_on';

    const REMOVED_AT = 'purged_on';


    /**
     * The attributes that are mass assignable.
     *
     * @var array
    */
    protected $fillable = ['client_id','account_name', 'company_code', 'legal_name', 'created_by','modified_by','instrucations'];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
    */
    //protected $hidden = ['account_id', 'remember_token'];


    protected $guarded = ['account_id'];

    /**
     * Get the industry record associated with the account.
    */
    public function industry()
    {
        return $this->hasOne(industry, industry::primaryKey);
    }

    public function pk(){

        return $this->primaryKey;
    }

}

但每次更新值时,我都会得到一个没有错误或日志的白页。

当我修改app\Models\Account.php并改变use RecordSignature, TrimScalarValues; to use RecordSignature;然后我没有得到白页,但显然这些值没有被修剪并转换为空。

我在这里做错了什么?


你不能打电话$this->setAttribute()在你的特质中。相反,你想调用“原始”setAttribute方法通过使用parent:::

public function setAttribute($key, $value)
{
    if (is_scalar($value)) {
        $value = $this->emptyStringToNull(trim($value));
    }

    return parent::setAttribute($key, $value);
}

关于空日志,除了框架中的日志之外,您还检查过网络服务器日志吗?

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

如何使用 Laravel 5.1 将空字符串更改为 null? 的相关文章

  • Laravel - LIKE 运算符来搜索加密值

    我正在尝试在 Laravel 应用程序中实现一个搜索模块 可以按名称过滤用户 为了保护用户 name 列行在数据库上加密 我面临的问题是下面的查询总是返回 0 结果 我在搜索数据库之前对搜索输入值进行加密 patients DB selec
  • Laravel Blade:@extends('adminlte::page') 中参数中的双列是什么意思

    我想使用这个管理面板 https github com jeroennoten Laravel AdminLTE https github com jeroennoten Laravel AdminLTE 但我不明白这个语法 extends
  • 为什么我的 php 代码无法连接到远程 MySql 数据库?

    我正在尝试连接到远程 MySql 数据库 但收到以下错误消息 警告 mysqli connect HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 在 C myLocalDi
  • PHP json_encode json_decode UTF-8

    如何将包含国际字符的 json 编码字符串保存到数据库 然后在浏览器中解析解码后的字符串
  • WP_Query 相同的请求,不同的语法 - 其中之一不起作用

    我有一个运行良好的 WP Query args array post type gt product meta key gt product subtype meta value gt public compare gt 但当我想搜索多个m
  • PHP - 将文件系统路径转换为 ​​URL

    我经常发现项目中的文件需要从文件系统和用户浏览器访问 一个例子是上传照片 我需要访问文件系统上的文件 以便可以使用 GD 来更改图像或移动它们 但我的用户还需要能够从类似以下的 URL 访问文件example com uploads myp
  • 如何禁用vuejs中的按钮

    我想在填写表单时禁用该按钮 当所有输入都填满后 将使用 vuejs 和 laravel 框架启用按钮 我尝试通过简单地禁用按钮来实现这一点
  • PHP MySQLi 多次插入

    我想知道准备好的语句是否与具有多个值的普通 mysql query 一样工作 INSERT INTO table a b VALUES a b c d VS sql db gt prepare INSERT INTO table a b V
  • 连接到 mysql 服务器(localhost)非常慢

    实际上有点复杂 摘要 与数据库的连接非常慢 页面渲染大约需要 10 秒 但页面上的最后一条语句是一个回显 当页面在 Firefox 中加载时我可以看到它的输出 IE 是相同的 在谷歌浏览器中 只有在加载完成后输出才可见 不同浏览器的加载时间
  • “composer”在 Windows 服务器中未被识别为内部或外部命令

    我使用的是Windows Server 2008操作系统 我下载作曲家安装程序 exe https getcomposer org download 并安装到我的电脑上 当我尝试时composer install 我收到错误 compose
  • 如何根据状态从父表和子表获取数据,其中外键每行具有不同的状态

    我有 2 个具有外键关系的表 情况是我有一个case and a case有很多revisions 和每个revision有自己的status 如果仅更改外键表状态的特定行 我想获取父表数据和子数据 Table Case id case n
  • 查找关联数组中最小值的键

    在 PHP 中 假设您有一个如下所示的关联数组 pets array cats gt 1 dogs gt 2 fish gt 3 我如何找到具有最低值的密钥 在这里 我要寻找cats 是否有一些我错过的内置 PHP 函数可以实现此目的 如果
  • MySQL - 重命名列

    如何重命名 mysql 列help to content在我的桌子上tbl help mysql query ALTER TABLE tbl help CHANGE COLUMN help content 您必须在更改列语句中包含列的定义
  • 通过左连接实现精确分页

    我已经思考这个问题有一段时间了 我认为最好四处询问并听听其他人的想法 我正在构建一个在 Mysql 上存储位置的系统 每个位置都有一个类型 有些位置有多个地址 表格看起来像这样 location location id autoincrem
  • 我如何知道是否启用了 PHP 缓存?

    我曾经认为缓存很难安装 所以我从来没有这样做过 在阅读了有关 APC 的内容后 它似乎很容易安装 我一直认为我必须修改应用程序中的大量 PHP 代码才能使用它 哈哈 不管怎样 我想安装APC 我可以使用 phpinfo 并注意到它没有在页面
  • 根据产品变体术语将收件人添加到 Woocommerce 电子邮件通知

    我创建了一个 Woocommerce 插件并要求它做两件事 根据购物车中的产品变体 向特定电子邮件地址发送通知消息 电子邮件必须仅包含相关产品 不得包含其他属性的产品 例如 产品 A 具有名为 Chef 的属性 其中 Chef one 和
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • 如何使用 facebook 用户登录我的网站?

    我想知道 facebook 如何让用户登录我们的网站 我的意思是用户需要注册到我的网站才能发表评论 我如何通过我的 php 代码检查它是否是登录用户 我听说你只能用javascript检查它是否是登录用户 感谢您的任何解释 您可以使用脸书
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in

随机推荐

  • jQuery - 如果 URL 与 href 匹配,则将 LI 移至 UL 顶部?

    一直试图让它发挥作用 但没有成功 任何帮助 将不胜感激 搜索 UL 如果任何 href 等于当前 URL 则将其列表项移动到 UL 列表堆栈的顶部 var url window location toString partnerCharit
  • C、从文件读入结构体

    我已经为此苦苦挣扎了好几天 但我不明白为什么它不起作用 我正在尝试从文件中读取数字 数字如下所示 0 2012 1 1 2000 000000 0 2012 1 1 3000 000000 1 2012 1 1 4500 000000 我的
  • 如何使用 Google Cloud Endpoints 返回文件?

    我有一个方法可以生成带有一些数据库记录的 CSV 文件 public static void generateCsvForAttendees List
  • Python中的变量在使用前必须先定义吗?

    Python 很像 PHP 吗 我可以调用一个变量 如果它不存在 就会创建它 或者我需要声明它们 在 PHP 中 如果你调用一个变量并且它不存在 你会得到Notice Undefined variable 这不会创建它 再次执行相同的操作仍
  • 显示 pdf 时不显示 Favicon,如何使其显示?

    import React from react import CoursePDF from pdf course pdf function About return div p a href CoursePDF here a p div e
  • 无法让在 OS X 10.9 上构建的应用程序在 OS X 10.5 上运行

    Problem 我最近将构建环境升级到了 Xcode 6 1 1 在 OS X 10 9 上运行 现在我无法在 OS X Leopard 10 5 下再次运行我的应用程序 对于目标来说 Base SDK被设定为操作系统 X 10 6 and
  • AssociationTypeMismatch 和 FactoryGirl

    最近这件事引起了一些不满 似乎在我的黄瓜测试中使用工厂 在某些情况下会导致AssociationTypeMismatch错误例如 MyModel 65776650 expected got MyModel 28190030 ActiveRe
  • iPad/iPhone 上的 HTML5 视频背景

    I used 这个解决方案 https stackoverflow com a 3954583 269106使用 html5 视频作为我网站的背景 然而 它似乎不适用于 iPad iPhone 我得到的只是黑屏 并且视频没有调整大小 此外
  • 如何从 C# 执行 Java 程序?

    想知道是否有人知道在运行时从 C 代码执行 Java 命令行程序的好方法 它与执行本机 EXE 文件相同吗 它会同步运行还是异步运行 这意味着我可能必须等待线程完成才能找出结果 具体来说 我想从服务器端的 Web 应用程序调用一个小实用程序
  • 为什么 Data.Sequence 没有“insert”或“insertBy”,如何有效地实现它们?

    我对 Sequence 类型的接口中缺少这些函数感到困惑 因为 Data List 提供了这些函数 这里是否存在效率问题 或者只是对这些功能的需求不足 由于它们不是 Data Sequence 的一部分 我如何才能有效地实现它们以达到我的目
  • 应用程序无法正确初始化

    我们有一个使用 vs2010 构建的项目 它使用带有托管代码的 dll 我在 vs2010 中构建了 dll 目标 Framework NET 4 0 也尝试过 Client Profile 这是 2010 为您提供的唯一选项 当我去运行它
  • 如何使用函数式编程风格在 Scala 中管理数据库连接?

    我有一段使用数据库连接的 Scala 代码 def getAllProviderCodes implicit conf Configuration List String var conn java sql Connection null
  • Ruby 2.6.5 和 PostgreSQL pg-gem 分段错误

    从控制台我无法执行任何涉及数据库的操作 我遇到分段错误 rbenv versions 2 6 5 lib ruby gems 2 6 0 gems pg 1 1 4 lib pg rb 56 BUG Segmentation fault a
  • 从 s3 检索文件失败,并显示“提供的令牌已过期”。不过,相同的文件适用于 AWS CLI

    当我尝试从 s3 检索文件时遇到问题 我能够按预期连接到 s3 存储桶但是当我尝试检索该文件时 出现以下错误 正在从我的处获取凭据 aws credentials and 我可以使用 AWS CLI 从本地下载相同的文件 有什么想法这里可能
  • 重命名并保存 Outlook 中的附件

    我正在尝试使用 Outlook 规则保存附件并将其重命名为电子邮件正文中找到的单词 该单词位于冒号之后的第三行 我有一个规则集来运行这个脚本 Public Sub saveAttachtoNet itm As Outlook MailIte
  • java中检测多个按键

    我正在尝试创建一个平台 但我一直致力于如何同时检测多个按键 例如 如果我使用运行键并向前运行 然后我按下跳跃键 游戏仍然需要知道运行键是否被按下 这比我平常做的要复杂一些 通常我会允许每个Action直接改变游戏状态 这个例子展示了如何使用
  • jQuery:如何让 ajaxSend 在继续之前等待另一个 Ajax 响应?

    我正在使用 jQuery v 3 0 0 我需要ajax发送 http api jquery com ajaxsend 检查值是否存在于localStorage 将其添加到传出请求标头中 如果该值不存在于localStorage ajaxS
  • Laravel 5.1 一个表单两个提交按钮

    我正在使用 Laravel 5 1 我想制作一个带有两个提交按钮的表单 保存和保存草稿 但是当我发布表单时 我拥有除提交值之外的所有字段 我读到 当通过 ajax 发送表单时 Laravel 不会将提交按钮值放入 POST 中 所以您能帮我
  • WordPress 高级自定义字段插件 + Twig 模板

    我正在使用模板创建一个房地产网站Realia http themeforest net item realia responsive real estate wordpress theme 这个主题基于 Twig 文件 这是我的问题 我有一
  • 如何使用 Laravel 5.1 将空字符串更改为 null?

    在使用 Laravel 5 1 时 我尝试在使用 Eloquent ORM 将每个值保存到数据库之前检查每个值 我的逻辑是 如果该值为空字符串 则首先修剪该值 然后将其转换为null而不仅仅是一个空字符串 建议我创建一个 Trait 来重写