首页 > 解决方案 > PHP SQL Server十进制/数字不能以0开头

问题描述

我将 Laravel 与数据库 SQL Server 一起使用,我的 PHP 版本是 7.4,驱动程序版本是 5.9。

如果从 Microsoft Management SQL Server 数据库中查看数据,我会遇到问题,如果我们在数据库中查看数据,数字或十进制数据类型的结果是 0.5,但是当我在 Laravel 中检索查询数据时,结果是,5 没有小数点前 0。这是一个错误驱动程序 SQL Server 吗?

数据库中的图片

当我从查询 laravel 中检索数据时的图片

对于我的查询代码 Laravel。

 public function edit($id)
    {
        $tooling = DB::table('master_tooling')
        ->where('id',$id)->first();
        return view('setup.master_tooling.update',compact('tooling'));
    }

标签: phpsql-serverlaravel

解决方案


PHP 可以将字符串转换".23"为浮点数,它将被正确表示(echo (float) '.23';打印 0.23)。您所有的Laravel列都是字符串,Laravel具有属性转换,这会将列更改为正确的类型。

其次,请使用Eloquent模型,这被认为是最佳实践,并且比DB::table(). 创建您的模型 MasterTooling.php,您可以使用以下 make 命令创建它php artisan make:model MasterTooling。在这里你可以添加属性转换,我只添加ton_maxton_warn显示。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class MasterTooling extends Model
{
    protected $casts = [
        'ton_warn' => 'float',
        'ton_max' => 'float',
    ];
}

您的编辑视图代码现在应该更新为此。

public function edit($id)
{
    $tooling = MasterTooling::findOrFail($id);

    return view('setup.master_tooling.update',compact('tooling'));
}

推荐阅读