领先的0被删除[重复]

问题描述 投票:-2回答:2

在我使用Laravel的14个月里,我遇到过一个我从未遇到过的问题。

我有一个用户注册系统。任何应用程序权利的基本要求。我有通常的凭据名称,用户名,电子邮件,密码和电话号码。

如果我以下列格式086123456提交号码。前导0将从DB中保存的内容中删除。 phone_number字段是整数。

不知道这里发生了什么。

用户模型

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Property;
use Tymon\JWTAuth\Contracts\JWTSubject;


class User extends Authenticatable implements JWTSubject
{
    use Notifiable;

    protected $fillable = [
        'first_name', 'last_name', 'username', 'email', 'phone_number', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function properties()
    {
        return $this->hasMany(Property::class);
    }

    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    public function getJWTCustomClaims()
    {
        return [];
    }
}

注册功能

 public function register() 
    {
        $user =  User::create(['first_name' => request('first_name'), 'last_name' => request('last_name'), 'username' => request('username'), 'email' => request('email'), 'phone_number' => request('phone_number'), 'password' => bcrypt(request('password'))]);
        return response()->json($user);
    }
php laravel laravel-5 php-7
2个回答
6
投票

phone_number字段是整数。

这就是问题。 086123456不是一个有效的整数,所以它正在剥离0,只留下86123456。您可能希望使用string值来表示这一点,因为大量整数值或无效的整数值在电话号码中很常见,如+-()等字符。


5
投票

在PHP中,整数086123456表示为86123456,因为整数不关心前导零。你应该使用字符串。

© www.soinside.com 2019 - 2024. All rights reserved.