我试图使用电子邮件作为我的表的主键,所以我雄辩的代码是-
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserVerification extends Model
{
protected $table = 'user_verification';
protected $fillable = [
'email',
'verification_token'
];
//$timestamps = false;
protected $primaryKey = 'verification_token';
}
我的数据库是这样的-
但如果我这样做-
UserVerification::where('verification_token', $token)->first();
我得到这个-
{
"email": "[email protected]",
"verification_token": 0,
"created_at": "2016-01-03 22:27:44",
"updated_at": "2016-01-03 22:27:44"
}
So, the 验证令牌/首要的关键变为0。
有人可以帮忙吗?
这是于2015年12月29日添加到升级文档中,所以如果你之前升级过,你可能会错过它。
从模型中获取任何属性时,它会检查该列是否应转换为整数、字符串等。
默认情况下,对于自增表,此方法中假定 ID 为整数:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L2790
所以解决办法是:
class UserVerification extends Model
{
// if your key name is not 'id'
// you can also set this to null if you don't have a primary key
protected $primaryKey = 'your_key_name';
public $incrementing = false;
// In Laravel 6.0+ make sure to also set $keyType
protected $keyType = 'string';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)