作者:苏木影子Hc_657 | 来源:互联网 | 2023-08-31 11:46
跟进我昨晚的question,我度过了一个美好的睡眠之夜,并“发现”这是因为自动演员类型转换或其他原因.总结一下:模型使用uuidas主键他们通过mySQL插入的触发器获取它们
跟进我昨晚的question,我度过了一个美好的睡眠之夜,并“发现”这是因为自动演员/类型转换或其他原因.
总结一下:
>模型使用uuidas主键
>他们通过mySQL插入的触发器获取它们
>要获取数据库运行时生成的uuid,我调用$model_object-> fresh(); fresh()
>这在将对象作为一个整体获取时起作用,但在仅选择一个属性时则不起作用
模型
use Illuminate\Database\Eloquent\Model;
class Address extends Model {
protected $table = 'Addresses';
protected $fillable = ['uuid', 'zipCode', 'houseNumber'];
protected $primaryKey = 'uuid';
//public $incrementing = false;
}
控制器(拧紧的地方)
public function store(Request $request) {
$input = $request->all();
$address = Address::create($input);
var_dump($address); exit;
//result (as expected)
$address = $address->fresh();
var_dump($address); exit;
//result (as expected)
var_dump($address->uuid); exit;//result (wow): int(0)
}
解决方法:
为了使其工作,我不得不手动覆盖模型中主键的强制转换类型.
protected $casts = [
'id' => 'string'
];