laravel uuid не отображается в запросе

У меня есть таблица базы данных postgres, которая использует uuid в качестве своего первичного ключа, через webpatser / Laravel-UUID пакет и «читаемые» веб-идентификаторы через vinkla / hashids.

Когда я запрашиваю базу данных, если я дд () ответ, я вижу UUID в полном объеме, но если я просто вернуть, Я вместо этого получаю целое число.

Предположим, я упустил что-то очевидное, поэтому:

миграция

$table->uuid('id');
$table->string('web_id');

$table->primary('id');

модель

public function store()
{
$data = [
'id' => Uuid::generate(4)->string,
'web_id' => Hashids::encode(mt_rand(1,1000000)),

Я предполагаю, что что-то происходит, когда данные приводятся в json, но я не уверен, с чего бы я начал заниматься этим …

Я также вижу такое же поведение у ремесленника, повозиться, fwiw:

 >>> $result = App\Model::firstOrFail()
=> App\Model {#675
id: "587bb487-881d-417e-8960-fbecaa3b270b",
web_id: "Mxqv4LYP",
created_at: "2016-01-25 15:52:25+00",
updated_at: "2016-01-25 15:52:25+00",
}

>>> $result->id
=> 587

2

Решение

Eloquent предполагает, что первичный ключ (который названный id по умолчанию) является целым числом, и int по умолчанию в getCasts метод:

public function getCasts()
{
if ($this->incrementing) {
return array_merge([
$this->getKeyName() => 'int',
], $this->casts);
}
return $this->casts;
}

Это можно перезаписать, указав, что первичный ключ не увеличивается автоматически, добавив его в вашу модель:

$incrementing = false;

Или путем наложения id столбец к string в $casts Свойство модели, вот так:

protected $casts = [
'id' => 'string'
]

Как описано в Eloquent: кастинг атрибутов документация.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]