我正在尝试使用电子邮件作为我表的主键,所以我雄辩的代码是-
<?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": "sdfsdf@sdfsdf.sdf",
"verification_token": 0,
"created_at": "2016-01-03 22:27:44",
"updated_at": "2016-01-03 22:27:44"
}
因此, 验证令牌/ 主键 变为 0。
有人可以帮忙吗?
原文由 Abrar Jahin 发布,翻译遵循 CC BY-SA 4.0 许可协议
这已 添加到 2015 年 12 月 29 日的升级文档中,因此如果您之前升级过,您可能会错过它。
从模型中获取任何属性时,它会检查该列是否应转换为整数、字符串等。
默认情况下,对于自动递增表,ID 在此方法中假定为整数:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L2790
所以解决方案是: