热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php–为什么Eloquent(在Laravel中)将我的varcharuuid主键强制转换为导致错误的整数?

跟进我昨晚的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'
];


推荐阅读
author-avatar
苏木影子Hc_657
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有