Laravel MongoDB передать объект в модели - PullRequest
0 голосов
/ 17 января 2020

Моя текущая схема MongoDB использует пользовательский тип объекта UUID как _id. Я пытаюсь создать новый UUID в моей модели пользователя, используя $attributes = [];. Я не могу найти решение о том, как передать тип данных объекта в мою модель.

Моя модель:

use Authenticatable, Authorizable, CanResetPassword;

protected $connection = 'mongodb';
protected $collection = 'users';

protected $fillable = [
    'username', 'email', 'password'
];

protected $attributes = [
    '_id' => Uuid\Uuid::uuid4(),
    'rank' => 1,
    'token' => 0,
    'banned' => false,
    'vote_count' => 0,
    'vote_bank' => 0,
    'capeAllowed' => false,
    'skin' => null,
    'cape' => null,
    'verified' => false,
    'nameChanges' => 0
];

Я не могу найти способ получить объект UUID в _id. Это должен быть тип объекта, а не строка.

Я пытался сделать это, передавая новый объект, используя User::create(Uuid::uuidv4()), но он также не принимает его. Веб-сервер был на NodeJS, у которого не было проблем с использованием объекта в качестве типа данных. В базе данных уже есть много записей, использующих двоичный объект UUID в качестве _id.

Я также пытался использовать много библиотек. Многие не работают с Laravel 6.x или те, которые работают, не возвращают двоичный формат.

1 Ответ

1 голос
/ 22 января 2020

В решении использовался метод User::create(). protected $attributes = [] не принимает переменные из того, что я мог видеть. Я использовал двоичный класс PHP для преобразования ramsey / uuidv4 в тип UUID: new Binary(Uuid::uuid4()->getBytes(), Binary::TYPE_UUID)

...