跟进我昨晚的 question ,我睡了个好觉,并“发现”这是由于自动转换/类型转换或其他原因造成的。
求和:
- 模型使用
uuid
作为主键 - 他们在从 mySQL 插入时通过
触发器
获取它们 - 为了获取数据库运行时生成的 uuid,我调用了
$model_object->fresh();
fresh()
- 这在获取整个对象时有效,但在仅选择一个属性时无效
型号
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Address extends Model {
protected $table = 'Addresses';
protected $fillable = ['uuid', 'zipCode', 'houseNumber'];
protected $primaryKey = 'uuid';
//public $incrementing = false;
}
Controller (搞砸的地方)
public function store(Request $request) {
$input = $request->all();
$address = Address::create($input);
var_dump($address); exit;
$address = $address->fresh();
var_dump($address); exit;
var_dump($address->uuid); exit;//result (wow): int(0)
}
最佳答案
为了让它工作,我必须在我的模型中手动覆盖主键的转换类型。
protected $casts = [
'id' => 'string'
];
关于php - 为什么 Eloquent(在 Laravel 中)将我的 varchar uuid 主键转换为整数导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40873971/