/ / mongodbに挿入する前にモデルにデータタイプを設定するにはどうすればいいですか? (Laravel-mongodb) - php、mongodb、laravel、laravel-5.3、laravel-eloquent

mongodbに挿入する前にモデルのデータ型を設定するには? (Laravel-mongodb) - php、mongodb、laravel、laravel-5.3、laravel-eloquent

私はここから参照を得ます: https://github.com/jenssegers/laravel-mongodb

データベースとコレクションをmongodbで作ります。 mongodbでは文書と列を作成しません。データを挿入すると自動的に列とデータ型が作成されるためです。

私のコントローラー、あなたはこれを以下で見ることができます:

public function create(array $attributes)
{
...
$result = User::create($attributes);
...
}

私のモデル、あなたはこれを以下で見ることができます:

<?php
...
use JenssegersMongodbEloquentModel as Eloquent;
use JenssegersMongodbEloquentHybridRelations;

class User extends Eloquent
{
use HybridRelations;
use SoftDeletes;

protected $connection = "mongodb";
public $table = "users";
protected $dates = ["deleted_at"];

public $fillable = [
...
"name",
...
];

protected $casts = [
...
"name" => "string",
...
];
}

mongodbにデータを挿入すると、mongodbのデータ型が入力に基づいて自動的に作成されます。

モデルにデータタイプを設定する方法

データ入力のデータ型がある場合 string

データ型に設定できます。 integer 私のモデルで

だから、mongodbで形成されるデータ型は integer

回答:

回答№1は0

MongoDBは、MongoDBドキュメントに直接埋め込むことができる2つのコンストラクタをサポートしています。これにより、整数データ型を指定できます。 MongoDB文書では、次のものを使用します。

myField: NumberLong("20372")

myFieldに64ビットの符号付き整数を含めることを指定します。 32ビット符号付き整数のみが必要な場合は、次のようにします。

myField: NumberInt("20372");

あなたが解決しなければならないのは、生成する方法ですドキュメントテキストをMongoDBドライバに渡す前に、PHPスクリプト内でそのドキュメントテキストをコピーします。 NumberLong()とNumberInt()コンストラクタは 文字列 PHPスクリプトが数値を受け取る場合NumberLong()およびNumberInt()コンストラクタを含むMongoDBドキュメントを必要なドライバ関数/メソッドに渡すと、MongoDBは最初にそれらの文字列をPHPで数値型に変換する必要はありません。 。

もちろん、これがどのように機能するかを知るためには、それが最善です。メインプロジェクトの本格的な編集を開始する前に簡単なテストを設定して、その編集に移ったときに事前にどのような変更を加えるべきかがわかるようにします。