質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

Q&A

解決済

1回答

2794閲覧

Laravel checkboxで複数取得する方法

ria_ria

総合スコア4

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

0グッド

0クリップ

投稿2021/12/22 05:24

前提・実現したいこと

laravel checkboxで複数値を取得したいです。
チェックをつけたtag_idを全て取得し、データベースに入れたいです。
ですが、どのように格納すれば良いかわからず困っています。

イメージ説明

発生している問題・エラーメッセージ

Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given, called in /Applications/MAMP/htdocs/simplenote/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 869

add.blade.php

1<div class="row justify-content-center ml-0 mr-0 h-100"> 2 <div class="card w-100"> 3 <form method='POST' action="/store3"> 4 5 @csrf 6 <input type='hidden' name='user_id' value="{{ $user['id'] }}"> 7 8 <div class="card-header">科目登録</div> 9 10 <div class="card-body"> 11 <table class="table table-bordered"> 12 <thead> 13 <tr> 14 <th scope="col"></th> 15 <th scope="col">ターム</th> 16 <th scope="col">科目名</th> 17 18 </tr> 19 </thead> 20 <tbody> 21 22 <tr> 23 24 @foreach ($tags as $tag) 25 <th scope="row"> <input type="checkbox" id="checkbox1" name="tag_id[]" value="{{$tag->tag_id}}"></th> 26 <td>{{$tag->term}}</td> 27 <td>{{$tag->tagname}}</td> 28   29 </tr> 30   @endforeach 31 </tbody> 32 33 </thead> 34 </table> 35 </div> 36 37 38 39 40 <div class="text-center"> 41 <button type='submit' class="btn btn-danger btn-lg">登録する</button> 42 </div> 43</div>

Homecontroller

1public function store3(Request $request){ 2 $user = \Auth::user(); 3 $inputs = $request->all(); 4 5 $registration_id = Registration::insertGetId([ 6 'tag_id'=> $inputs['tag_id'], 7 'user_id' => $inputs['user_id'], 8 9 10 ]); 11 12 return redirect()->route('home');

Web.php

1Route::post('/store3', 'HomeController@store3')->name('store3');

補足情報(FW/ツールのバージョンなど)

初心者で、質問も至らない点ばかりですがよろしくお願いいたいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP

1Registration::insertGetId([ 2 'tag_id'=> $inputs['tag_id'], 3 'user_id' => $inputs['user_id'], 4 ]);

では$inputs['tag_id']がarrayで、$inputs['user_id']はinteger。どう考えても複数にinsertすることはできないでしょう。

php

1foreach($inputs['tag_id'] as $tag_id){ 2 Registration::insertGetId([ 3 'tag_id'=> $tag_id, 4 'user_id' => $inputs['user_id'], 5 ]); 6}

じゃないと複数レコード挿入できないです。

投稿2021/12/22 06:26

skys215

総合スコア910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ria_ria

2021/12/22 06:47

ありがとうございます。 もう少し、質問してもよろしいでしょうか。 例えばuser_idが1のtag_id全てを取得するにはどのような記述をすれば良いのでしょうか?回答いただけたら幸いですよろしくお願いいたします。
skys215

2021/12/22 06:56

リレーションを設置した場合は$user->registrations->pluck('tag_id') array_column($user->registration, 'tag_id'); どちらでもよろしいです。
ria_ria

2021/12/22 07:21

ご丁寧にありがとうございました。 助かります( ; ; )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問