いつもご回答いただきありがとうございます。
おかげさまで勉強捗ってます!
前提・実現したいこと
laravelを使用してコントローラーでモデルから配列データを取り出し、
ビューに渡してビューからjqueryに配列で渡し、セレクトボックスの一括選択ボタンを作成したいと考えています。
試したこと
controller
1 $users = User::all(); 2 $select1 = $users->where('role_id',1); 3 4 return view('app.show' , $select1);
view
1 <a href="javascript:void(0);" id='select1'>営業</a>
jqeury
1 $('#select1').click(function(){ 2 const data = @json($select1); 3 $('#optgroup').multiSelect('select', select1); 4 return false; 5 });
プラグインの表示のソースは割愛しています。
出たエラー
array_merge(): Argument #1 is not an array
望んでいること
jqueryに渡した時に、role_idが1のユーザーのidを配列で以下のように挿入したい。
営業ボタンを押すと、userテーブルで営業の人を一括選択したいです。
jquery
1$('#select1').click(function(){ 2 const data = @json($select1); 3 $('#optgroup').multiSelect('select', ['1', '2',]); 4 return false; 5});
以上です。わかりづらいところあれば補足しますのでよろしくおねがいします
追記 (21:21現在)
コントローラーを以下に修正しました。
controller
1$select1 = DB::table('users')->select('id')->where('role_id', '1')->get()->pluck('id')->toArray(); 2 3return view('app.show' , compact('select1'));
ビューのbody内に以下の記述を追加しました。
view
1 <script> 2 var select1 = "@json($select1)"; 3 </script>
javascript
1$('#select1').click(function(){ 2 $select1 = select1.split(",", -1); 3 $('#optgroup').multiSelect('select', $select1); 4 return false; 5});
この記述で、ボタンを押すとセレクトボックス内にデータが反映されました!
と見えましたが、一番始めと最後の値が反映されておらず変数の中身を見てみると、
["[33", "10", "2", "5", "55", "44", "66]"]
のようになっており、33と66のidは反映されず飛ばされているみたいです。
reprace("[", "")等で消せるかと思って試してみたのですが治らず・・・
後少しなのでご存知でしたらご教授頂けませんでしょうか
回答5件
あなたの回答
tips
プレビュー