标签: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;
$address = $address->fresh();
var_dump($address); exit;
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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。