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

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

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

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

Q&A

1回答

2458閲覧

laravelでのradioボタンでの処理についての質問

grfdgdrg

総合スコア10

Laravel

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

0グッド

0クリップ

投稿2019/04/12 17:05

laravelで投票サイトを構築中です。
Contoller側の処理がわからずに困っています。
ラジオボタンで投票するとデータベースの値をインクリメントできるものを実装中ですが、うまくいきません。

男性か女性かをラジオボタンで投票してもらい、それをデータベースにある男性投票数、女性投票数をインクリメントしたいです。

index

1<form action="" method="post"> 2{{ csrf_field() }} 3男性ですか?女性ですか? 4<input type="hidden" name="id" value=""> 5<label><input type="radio" name="sex" value="0">men</label> 6<label><input type="radio" name="sex" value="1">woman</label> 7<input type="submit" value="送信"> 8</form>

SampleController

1public function index(){ 2return view('index'); 3} 4 5public function post(Request $request){ 6ここのインクリメントする処理がわかりません。 7$items=DB::table('user')->get(); 8return view('vote_result',['items'=>$items,]); 9}

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

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

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

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

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

guest

回答1

0

前提条件でわからない箇所があるので一部推測で記載します。
やりたい事をやるならpostの処理は以下です。一応解説コメントも付けてあります。

php

1 public function post(Request $request) 2 { 3 $sex = $request->input('sex'); // sexの値を取得する 4 5 $update_target_user = User::where('sex', $sex)->first(); // 更新するuserのデータを取得。モデルはuseでimportしてください。 6 $update_target_user->vote_count = $update_target_user->vote_count + 1; // 現在の投票数に対してインクリメントする。 7 $update_target_user->save(); // データを更新する 8 return view('vote_result',['items'=>$items,]); 9 }

詰まった箇所はRequestのデータ取得でしょうか?
DBからデータを引っ張ってくるところでしょうか?
何がわからないのかを具体的に記載すると、回答されやすくなりそうですよ!

以下はLaravelやシステム構築に慣れてからで良いのですが、
上記のコードでは同時に大量のユーザが投票した時に投票数が正しく更新されません。何かしらデータの整合性を保つ事を検討しましょう。
また、今回のような投票数をレコードに保持させる設計は、拡張性が低いので、
投票したユーザをDBに格納して、投票数を返却する時に投票者のcountをとる方法が良さそうです。

この辺りは質問レベル的にまだ考慮できなくて良いと思いますので、まずはある程度コードをかけるようになっちゃいましょう。

投稿2019/04/12 20:03

hhiroki

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問