Как сохранить данные массива из множественного выбора в Laravel с помощью Eloquent

#php #arrays #laravel #eloquent #save

#php #массивы #laravel #eloquent #Сохранить

Вопрос:

я хотел бы сохранить данные из множественного выбора в базу данных. Таким образом, пользователь может выбрать более одного продукта в множественном выборе. Я пробовал код, подобный приведенному ниже, но я получил эту ошибку «Преобразование массива ErrorException в строку». Вот мой blade.php

 <div class="form-group row" style="display:none;" id="inputbarang">
<label class="col-form-label col-lg-3 col-sm-12">Barang</label>
    <div class="col-lg-4 col-md-9 col-sm-12">
        <select class="form-control m-select2" width="500px" id="kt_select2_1" name="id_product[]" multiple="multiple">
                <option value=""></option>
                @foreach($produk as $p)
                <option value="{{ $p->id }}">{{ $p->product }}</option>
                @endforeach
        </select>
    </div>
</div>
  

и вот мой контроллер

 $id_promo = Promo::select('id')
   ->where('delete', 0)->orderBy('created_at', 'DESC')
   // ->take(1)
   ->pluck('id')->first();

   $id_product = [];
   $id_product[] = $request->id_product;

   // $id_products = $id_product['id_product'];

   foreach ($id_product as $i) {
           DetailPromo::create([
           'id_promo' => $id_promo,
           'id_product' => $i,
           'det_potongan' => $request->potongan,
           'det_jumlah_potongan' => $request->jumlah_potongan
       ]);
       }
  

Любая помощь будет оценена по достоинству, большое вам спасибо

Комментарии:

1. Кажется $request->id_product , это уже массив. Не могли бы вы попробовать выполнить цикл по нему напрямую с foreach ($request->id_product as $i) ... помощью?

2. о, вы правы, это работает! Большое спасибо @WesleySmith

Ответ №1:

Попробуйте приведенный ниже код:

 $id_promo = Promo::select('id')
    ->where('delete', 0)
    ->orderBy('created_at', 'DESC')
    // ->take(1)
    ->pluck('id')
    ->first()
;

$id_products = $request->id_product;
foreach ($id_products as $id_product) {
    DetailPromo::create([
        'id_promo' => $id_promo,
        'id_product' => $id_product,
        'det_potongan' => $request->potongan,
        'det_jumlah_potongan' => $request->jumlah_potongan
    ]);
}
  

Комментарии:

1. $id_products = $request->id_product; здесь бессмысленно. что-то вроде $id_products = $request->id_product ?? [] имело бы больше смысла