Tableau de conversion de chaîne de caractères (SQL: insert into

J'essaie d'insérer des données à partir d'un Semoir dans Laravel 5.6 et je vais avoir un problème avec le champ json type. Je veux ce domaine ("arrêt") pour être un tableau (par exemple de dix entiers de ne pas répéter).

La table de semoir (RoutesTableSeeder.php) est quelque chose comme ceci:

<?php

 use \Illuminate\Support\Facades\DB;
 use Illuminate\Database\Seeder;
 use Faker\Factory as Faker;

 use App\Models\Route;

 class RoutesTableSeeder extends Seeder
 {
   /**
   * Run the database seeds.
   *
   * @return void
   */
   public function run()
   {
    //factory(Route::class, 20)->create();

    $faker = Faker::create();

    //$values= array();

    /*for($i=0; $i < 10; $i++) {
        $values []= $faker->unique()->randomDigit;
    }

    print_r(json_encode($values));*/

    foreach (range(1, 20) as $index)
    {
        $values = array();

        for($i=0; $i < 10; $i++) {
            $values []= $faker->unique()->randomDigit;
        }

        //print_r($values);

        DB::table('routes')->insert([
            'user_id' => $faker->numberBetween($min = 1, $max = 20),
            'name' => $faker->name,
            'description' => $faker->name,
            'route_photo' => $faker->image($dir = null, $width = 640, $height = 480, $category = null, $fullPath = true, $randomize = true, $word = null),
            'stops'=> [
                        //$values,
                        json_encode($values)
                        //implode(", ", $values)
            ],
        ]);
    }

  }
  }

J'ai essayé plusieurs façons d'insérer des données. Lorsque j'utilise json_encode($valeurs) j'ai l'erreur suivante:

Array to string conversion 
(SQL: insert into `routes` (`user_id`, `name`, `description`, `route_photo`, `stops`) 
values (19, Isaac 
  Feil, Holly Nolan, /tmp/bc8a3cf5e015d3afa96317485499e0ca.jpg, 
[8,6,0,7,3,1,5,2,4,9]))

Ce genre de valeur [8,6,0,7,3,1,5,2,4,9] est ce que je veux stocker dans "arrêts" de champ, par exemple, mais je ne sais pas ce qui ne va pas....

S'il vous plaît, auriez-vous la gentillesse de m'aider? Je suis désespérée....

Je poste le modèle, s'il permet d':

<?php

  namespace App\Models;

  use Illuminate\Database\Eloquent\Model;

  class Route extends Model
    {
      protected $fillable = [
       'user_id',
       'name',
       'description',
       'route_photo',
       'stops'
 ];


   protected $casts = [
    'stops' => 'array'
  ];
 }

Et la migration:

  public function up()
{
    Schema::create('routes', function (Blueprint $table) {
        $table->increments('id');
        //FK:users
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
        //FK:users
        $table->string('name');
        $table->string('description')->nullable();
        $table->string('route_photo');
        $table->json('stops');
        $table->timestamps();
    });
 }

Merci beaucoup!!

  • Délimité par des virgules des listes dans une colonne est un terrible idée
  • Vous ne pouvez pas utiliser un tableau en une chaîne de caractères
  • Vous pouvez utiliser seralize puis sur récupérer utilisation unseralize pour obtenir un tableau