在使用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);
}
答案 0 :(得分:6)
phone_number字段是整数。
这是问题所在。 086123456
不是有效的整数,因此它将剥离0
,仅保留86123456
。您可能想要使用string
值来表示这一点,因为电话号码中普遍使用大整数或无效整数值,像+
,-
,{ {1}}和(
。
答案 1 :(得分:5)
在PHP中,整数086123456
表示为86123456
,因为整数并不关心前导零。您应该改用字符串。