/ / ¿Cómo establecer el tipo de datos en el modelo antes de insertarlo en mongodb? (Laravel-mongodb) - php, mongodb, laravel, laravel-5.3, laravel-eloquent

¿Cómo configurar el tipo de datos en el modelo antes de insertarlo en mongodb? (Laravel-mongodb) - php, mongodb, laravel, laravel-5.3, laravel-eloquent

Recibo referencia desde aquí: https://github.com/jenssegers/laravel-mongodb

Realizo base de datos y colección en mongodb. No hago el documento y la columna en mongodb. Porque hará automáticamente la columna y el tipo de datos cuando inserte los datos

Mi controlador, puedes ver esto a continuación:

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

Mi modelo, puedes ver esto a continuación:

<?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",
...
];
}

Cuando inserto datos en mongodb, el tipo de datos en mongodb se creará automáticamente en función de la entrada

¿Cómo configurar el tipo de datos en el modelo?

Cuando tengo un tipo de datos de entrada de datos: string

Puedo configurarlo para el tipo de datos: integer en mi modelo

Por lo tanto, el tipo de datos que se forma en mongodb es integer

Respuestas

0 para la respuesta № 1

MongoDB admite dos constructores que se pueden incrustar en el documento de MongoDB directamente, lo que le permite especificar tipos de datos enteros. En el documento MongoDB, usas lo siguiente:

myField: NumberLong("20372")

para especificar que desea que "myField" contenga un entero con signo de 64 bits. Si solo desea un entero con signo de 32 bits, use:

myField: NumberInt("20372");

Lo que hay que trabajar es cómo generar.ese texto del documento dentro de su script PHP, antes de pasar el texto del documento al controlador MongoDB. Tenga en cuenta también que los constructores NumberLong () y NumberInt () toman cuerda valores, por lo que si su script PHP recibe numéricolos datos como cadenas, no tiene que convertir esas cadenas a un tipo numérico en PHP primero: MongoDB hará eso por usted cuando pase un documento MongoDB que contiene los constructores NumberLong () y NumberInt () a las funciones / métodos de controlador requeridos .

Por supuesto, para descubrir cómo funciona esto, es mejorpara configurar una prueba simple antes de iniciar la edición a gran escala de su proyecto principal, de modo que cuando pase a dicha edición, sepa qué cambios debe realizar de antemano.