ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-05-19 10:21:16  阅读:328  来源: 互联网

标签:php uuid type-conversion laravel-5 eloquent


跟进我昨晚的question,我度过了一个美好的睡眠之夜,并“发现”这是因为自动演员/类型转换或其他原因.

总结一下:

>模型使用uuidas主键
>他们通过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;
}

控制器(拧紧的地方)

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'
];

标签:php,uuid,type-conversion,laravel-5,eloquent
来源: https://codeday.me/bug/20190519/1134116.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有