Передать массив в один столбец в Laravel - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь передать некоторые значения в один столбец в таблице базы данных laravel.

Значения примерно такие: 20,45,67,89

, но я хочу, чтобы они войти в колонку вот так

=== USER_ID ====
20
45
67
89

Я пробовал как ниже , но не работает .. есть предложения?

foreach ($request->val2 as $value){

    $str_explode = explode(",",$value);

    DB::table('retirement')->insertGetId([
        'user_id' => $str_explode,
        'amount'  => $request->val1,
        'week' => $request->week

    ]);
}

Ответы [ 3 ]

0 голосов
/ 20 января 2020

Надеюсь, это сработает

 foreach ($request->val2 as $value){

 $str_explode = explode(",",$value);

 $insert = [];

 foreach($str_explode as $str){

     $insert[] = [
                   'user_id' => $str,
                   'amount'  => $request->val1,
                   'week' => $request->week
                 ];
 }

 DB::table('retirement')->insert($insert);
0 голосов
/ 20 января 2020

Я не уверен, что ясно понял ваш вопрос, я предполагаю, что вы хотите вставить массив в столбец:

  • Вы пытались установить столбец в миграции на Json?
  • Вы установили $ castts в модели на json или массив?
protected $casts = [ 'user_id' => 'array' ];

тогда, когда вы сделаете это, вы можете добавить массив к этому столбцу, например

Posts::create(['user_id'=>[1,2,3,4]]);

обычно поле user_id установлено на unsignedBigInt(), такого типа не будет принимать ничего, кроме целых чисел, сначала нужно проверить тип столбца миграции.

0 голосов
/ 20 января 2020

explode() возвращает массив, а не одно значение, поэтому он потерпит неудачу. Вместо этого вы должны l oop через все значения, подобные этому:

foreach ($request->val2 as $value){

    $str_explode = explode(",",$value);

    foreach($str_explode as $str){
        DB::table('retirement')->insertGetId([
            'user_id' => $str,
            'amount'  => $request->val1,
            'week' => $request->week
        ]);
    }
}

В качестве дополнительного совета, поскольку вы не сохраняете идентификатор, возвращаемый insertGetID, вы можете просто использовать insert. Более того, обычно рекомендуется использовать create, поскольку таким образом вы также сохраните временные метки для созданных и обновленных.

...