una todas sola seeder que migraciones migracion las laraveles especifico especifica ejecutar correr php arrays laravel types laravel-5.1

todas - php artisan migrate table



Tipo de matriz de migración de Laravel(matriz de tienda en columna de base de datos) (1)

Quiero almacenar una matriz de enteros en mi tabla y no puedo encontrar ningún tipo que admita matriz en la Documentation , ninguna sugerencia.

Migración:

public function up() { Schema::create(''pickups'', function (Blueprint $table) { $table->increment(''id''); $table->boolean(''default''); $table->integer(''shifts''); <<--------- HERE I want to store an array of integers $table->integer(''status_id''); $table->timestamps(); }); }


El tipo de datos de la array no está presente en todos los sistemas de base de datos y debido a que Schema Builder de Laravel es independiente de la base de datos, no ofrece métodos para crear columnas de tipos de datos que no sean comunes. Así que tienes dos opciones:

1. Use una declaración SQL sin procesar para agregar la columna, algo como la siguiente declaración que creo que debería funcionar. Aunque no estoy seguro de si Query Builder o Eloquent pueden manejar estos tipos de columnas correctamente:

DB::statement(''ALTER TABLE pickups ADD COLUMN shifts integer[]'');

2. Utilice la solución disponible de Eloquent mediante la conversión de atributos . En su migración cree la columna como json así:

public function up() { Schema::create(''pickups'', function (Blueprint $table) { $table->increment(''id''); $table->boolean(''default''); $table->json(''shifts''); $table->integer(''status_id''); $table->timestamps(); }); }

Luego, puede configurar su modelo de Pickup (si aún no lo ha hecho) y usar la propiedad $casts :

class Pickup extends Model { protected $casts = [ ''shifts'' => ''array'' ]; }

Esto permitirá que Eloquent sepa que cuando obtenga datos de la base de datos deberá convertir el valor de la columna de shifts en una array . Esto solo es emular una matriz real, ya que en el nivel de la base de datos la columna es de tipo TEXT y la matriz está serializada. Sin embargo, al eliminar la serialización del valor de la columna, Eloquent devuelve una matriz real de enteros para que los use en su código. A continuación se muestra un ejemplo de caso de uso:

// Create a new Pickup entry $pickup = App/Pickup::create([ ''default'' => true, ''shifts'' => ''[1, 5, 7]'', // you can easily assign an actual integer array here ''status_id'' => 1 ]);

Suponiendo que lo anterior generó una entrada con id igual a 1 cuando más tarde recupere la entrada:

$pickup = App/Pickup::find(1); dump($pickup->shifts);

El dump() del código anterior generará una matriz real de enteros:

array:3 [▼ 0 => 1 1 => 5 2 => 7 ]