前导0被删除

时间:2019-04-15 18:28:36

标签: php laravel laravel-5 php-7

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

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

如果我以以下格式提交数字086123456。正在从数据库中保存的内容中删除前导0。 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);
    }

2 个答案:

答案 0 :(得分:6)

  

phone_number字段是整数。

这是问题所在。 086123456不是有效的整数,因此它将剥离0,仅保留86123456。您可能想要使用string值来表示这一点,因为电话号码中普遍使用大整数或无效整数值,像+-,{ {1}}和(

答案 1 :(得分:5)

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