Laravel MongoDB 在模型中传递对象

Laravel MongoDB pass object in model

我当前的 MongoDB 架构正在使用自定义 UUID 对象类型作为 _id。我正在尝试使用 $attributes = []; 在我的用户模型中生成一个新的 UUID。我找不到任何关于如何将对象数据类型传递到我的模型的解决方案。

我的模型:

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 或者不能使用 return 二进制格式。

解决方案使用的是User::create()方法。 protected $attributes = [] 不接受我所看到的变量。我使用 PHP 的二进制 class 将 ramsey/uuidv4 转换为 UUID 类型: new Binary(Uuid::uuid4()->getBytes(), Binary::TYPE_UUID)