Abr*_*hin 60 php mysql laravel eloquent laravel-5
我正在尝试使用电子邮件作为我的表的主键,所以我雄辩的代码是 -
<?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';
}
Run Code Online (Sandbox Code Playgroud)
我的DB就像这样 -
但如果我这样做 -
UserVerification::where('verification_token', $token)->first();
Run Code Online (Sandbox Code Playgroud)
我得到这个 -
{
"email": "sdfsdf@sdfsdf.sdf",
"verification_token": 0,
"created_at": "2016-01-03 22:27:44",
"updated_at": "2016-01-03 22:27:44"
}
Run Code Online (Sandbox Code Playgroud)
因此,验证令牌/主键变为0.
有人可以帮忙吗?
and*_*ber 139
这已添加到2015年12月29日的升级文档中,因此如果您在此之前升级,则可能错过了它.
从模型中获取任何属性时,它会检查该列是否应该转换为整数,字符串等.
默认情况下,对于自动递增表,此方法中的ID假定为整数:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L2790
所以解决方案是:
class UserVerification extends Model
{
protected $primaryKey = 'your_key_name'; // or null
public $incrementing = false;
}
Run Code Online (Sandbox Code Playgroud)
lag*_*box 22
在模型设置$incrementing为false
public $incrementing = false;
Run Code Online (Sandbox Code Playgroud)
这将阻止它认为它是一个自动增量字段.
您需要设置的模型上有两个属性.第一个$primaryKey告诉模型期望主键的列.第二个$incrementing因此它知道主键不是线性自动递增值.
class MyModel extends Model
{
protected $primaryKey = 'my_column';
public $incrementing = false;
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Eloquent文档中的Primary Keys部分.
| 归档时间: |
|
| 查看次数: |
77423 次 |
| 最近记录: |