【问题标题】:Issue with Laravel casting Int to string when fetching from server?从服务器获取时 Laravel 将 Int 转换为字符串的问题?
【发布时间】:2021-07-20 00:58:13
【问题描述】:

我的 Web 应用程序在服务器上运行。我在本地测试了代码,它工作正常。我从本地服务器获取 id 作为 int,但在托管服务器中获取字符串。

使用 PHP 7.3

$data = DB::table('users')
->select('id')
->get();

$data = $data->pluck(id);

(本地) 输出 => [1,2,3]

(托管) 输出 => ["1","2","3"]

谁能帮助解决这个问题?我可以循环输入类型转换,但我的控制器中有 100 个函数。无法对每个查询进行类型转换。

【问题讨论】:

标签: php mysql laravel laravel-5 eloquent


【解决方案1】:

你可以在你的模型中使用铸造Attribute Casting

protected $casts = [ 
        'field_name1' => 'integer', 
    ];

【讨论】:

    【解决方案2】:

    这是由于生产服务器(托管服务器)上缺少插件。 您需要安装mysqlnd 插件来解决此问题。

    您没有提到您使用的是哪个操作系统。如果是Linux,可以检查mysqlnd是否安装了这样

    $ sudo dpkg -l | grep 'mysqlnd'
    

    如果没有安装,需要这样安装(假设你有php5)

    $ sudo apt-get install php-mysqlnd
    

    软件包名称可能因 PHP 版本而异。

    请参考我的answer 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多