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)
我当前的 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)