だから私はこのコードを持っています
表示:
<div id="checkboxes">
<input type="checkbox" class="checkbox" name="services" value="{{ $service->id }}" id="{{ $service->id }}" />
<label class="whatever" for="{{ $service->id }}"><p class="serv-text"> {{ $service->service_name }} + ${{ $service->price }} </p></label>
</div>
コントローラ:
public function store(Request $request)
{
orders::create(Request::all());
return 'test';
}
モデル:
class orders extends Model
{
protected $fillable = [
'category',
'services',
'total_price',
'user_id',
'status',
'user_id'];
}
フォームを送信しようとすると、servicesのデータベースでは、フォームを送信するときに複数のチェックボックスをオンにしても、番号が1つしかありません。私はグーグルで解決策を見つけようとしましたが、何もしませんでした。
このような複数のチェックボックスがある場合:
<input type="checkbox" name="services" value="1"/>
<input type="checkbox" name="services" value="2"/>
<input type="checkbox" name="services" value="3"/>
名前は一意である必要があるため、サーバーに送信する値は1つだけです。回避策は配列入力を使用することです:
<input type="checkbox" name="services[]" value="1"/>
<input type="checkbox" name="services[]" value="2"/>
<input type="checkbox" name="services[]" value="3"/>
次に、その入力をコントローラーで取得し、次のようなことを行うことができます。
$services = $request->input('services');
foreach($services as $service){
orders::create($service);
}
Laravelでの配列の検証:
https://laravel.com/docs/5.7/validation#validating-arrays
入力配列の詳細:
フォーム入力配列をPHP配列 に取得する方法