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

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

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

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

575閲覧

[Laravel]セレクトボックスとDBを接続して操作したい。

Suzuki_Kameo

総合スコア10

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/08/30 12:26

編集2022/08/30 14:14

前提

Laravelで簡易的な申請and承認アプリを作っています。
イメージ説明
イメージ説明

イメージ説明
イメージ説明

実現したいこと

右側のセレクトボックスに申請の現状ステータスを常に表示して、
さらにセレクトボックスからステータスを選択をして更新ボタンを押したら。
データベースのstatus_idが更新されるという機能を実装したいです。

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

処理が通ってsuccesのメッセージが出るが、 データベース内がきちんと更新されていない。

該当のソースコード

index.blade.php

1@extends('layouts.app') 2 3@section('content') 4<div class="card p-5 mt-4 w-100 h-100"> 5 <form method='POST' action="{{ route('change_status', $sing_up_status->status_id) }}"> 6 @csrf 7 <table class="table"> 8 <thead class="thead-light"> 9 <tr> 10 <th>#</th> 11 <th>名前</th> 12 <th>日時</th> 13 <th>申請内容</th> 14 <th>状態</th> 15 <th>更新</th> 16 <th>編集</th> 17 </tr> 18 </thead> 19 20 <tbody> 21 @foreach ($signing_up as $signup) 22 <tr> 23 <th scope="row">{{ $signup->id }}</th> 24 <td>{{ $signup->user->name }}</td> 25 <td>{{ $signup->updated_at }}</td> 26 <td>{{ $signup->content }}</td> 27 <td> 28 <select class="form-control" id="status" name="status"> 29 @foreach ($statuses as $status) 30 <option value="{{ $status->id }}"> {{ $status->name }} </option> 31 @endforeach 32 </select> 33 </td> 34 <td> 35 @if($signup->status->id <= 2) 36 <button type="submit" id="update_button" value="更新">更新</button> 37 @else 38 <button type="submit" id="update_button" value="更新" disabled>更新</button> 39 @endif 40 41 </td> 42 <td> 43 <a href="{{ route('edit_signing_up', $signup->id) }}"> 編集 </a> 44 </td> 45 </tr> 46 @endforeach 47 </tbody> 48 </table> 49 </form> 50</div> 51@endsection

SigningUpController.php

1<?php 2 3namespace App\Http\Controllers; 4 5use App\SigningUp; 6use App\Status; 7use Illuminate\Http\Request; 8 9class SigningUpController extends Controller 10{ 11 public function __construct(){ 12 $this->middleware('auth'); 13 } 14 15 /** 16 * Display a listing of the resource. 17 * 18 * @return \Illuminate\Http\Response 19 */ 20 public function index() 21 { 22 $users = \Auth::user(); 23 $statuses = Status::get(); 24 $sing_up_status = SigningUp::first(); 25 $signing_up = SigningUp::where('users_id', $users->id)->orderby('updated_at', 'DESC')->get(); 26 return view('index', compact('signing_up','statuses', 'sing_up_status')); 27 } 28 29 /** 30 * Show the form for creating a new resource. 31 * 32 * @return \Illuminate\Http\Response 33 */ 34 public function create() 35 { 36 return view('create'); 37 } 38 39 /** 40 * Store a newly created resource in storage. 41 * 42 * @param \Illuminate\Http\Request $request 43 * @return \Illuminate\Http\Response 44 */ 45 public function store(Request $request) 46 { 47 $user = \Auth::user(); 48 $signing_up = new SigningUp; 49 $signing_up->users_id = $user->id; 50 $signing_up->content = $request->content; 51 $signing_up->save(); 52 53 return redirect()->route('index')->with('success', '申請しました'); 54 } 55 56 /** 57 * Display the specified resource. 58 * 59 * @param int $id 60 * @return \Illuminate\Http\Response 61 */ 62 public function change_status(Request $request, SigningUp $signing_up) 63 { 64 $signing_up->status_id = $request->input('status'); 65 $signing_up->save(); 66 67 return redirect()->route('index')->with('success', 'ステータスを変更しました'); 68 } 69 70 /** 71 * Show the form for editing the specified resource. 72 * 73 * @param int $id 74 * @return \Illuminate\Http\Response 75 */ 76 public function edit(SigningUp $signing_up) 77 { 78 return view('edit_signing_up', compact('signing_up')); 79 80 } 81 82 /** 83 * Update the specified resource in storage. 84 * 85 * @param \Illuminate\Http\Request $request 86 * @param int $id 87 * @return \Illuminate\Http\Response 88 */ 89 public function update(Request $request, SigningUp $signing_up) 90 { 91 $validatedData = $request->validate([ 92 'content' => 'required|max:50', 93 ]); 94 95 $signing_up->update([ 96 'content' => $request->input('content') 97 ]); 98 99 return redirect()->route('index')->with('success', '申請内容を編集しました!'); 100 } 101 102 /** 103 * Remove the specified resource from storage. 104 * 105 * @param int $id 106 * @return \Illuminate\Http\Response 107 */ 108 public function destroy($id) 109 { 110 // 111 } 112} 113

SigningUp.php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class SigningUp extends Model 8{ 9 protected $fillable = ['content', 'status']; 10 11 protected $table = 'signing_up'; 12 13 public function user() 14 { 15 return $this->belongsTo('\App\User','users_id','id'); 16 } 17 18 public function status() 19 { 20 return $this->belongsTo('\App\Status','status_id','id'); 21 } 22}

2022_08_26_111804_create_signing_up_table.php

1<?php 2 3use Illuminate\Database\Migrations\Migration; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Support\Facades\Schema; 6 7class CreateSigningupTable extends Migration 8{ 9 /** 10 * Run the migrations. 11 * 12 * @return void 13 */ 14 public function up() 15 { 16 Schema::create('signing_up', function (Blueprint $table) { 17 $table->bigIncrements('id'); 18 $table->integer('users_id'); 19 $table->text('content'); 20 $table->integer('status_id')->default(1); 21 $table->timestamps(); 22 }); 23 } 24 25 /** 26 * Reverse the migrations. 27 * 28 * @return void 29 */ 30 public function down() 31 { 32 Schema::dropIfExists('application'); 33 } 34} 35

補足情報(FWのバージョン)

Laravel Framework 6.20.31

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

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

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

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

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

guest

回答1

0

diff

1 2class SigningUp extends Model 3{ 4- protected $fillable = ['content', 'status']; 5+ protected $fillable = ['content', 'status_id']; 6 7 protected $table = 'signing_up'; 8 9 public function user() 10 { 11 return $this->belongsTo('\App\User','users_id','id'); 12 } 13 14 public function status() 15 { 16 return $this->belongsTo('\App\Status','status_id','id'); 17 } 18} 19

投稿2022/08/30 13:58

phper.k

総合スコア3923

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

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

Suzuki_Kameo

2022/08/30 14:06

回答ありがとうございます。 ご指摘もらった箇所変更して再度実行してみたのですが、 やはり処理は通るんですけど、テーブル内の値は更新されないままです。
Suzuki_Kameo

2022/08/30 14:09

コントローラーの $signing_up->status_id = $request->input('status'); $signing_up->save(); を $signing_up->update([ 'status_id' => $request->input('status') ]); に変えるというのも試したのですが、変わらずです。
phper.k

2022/08/30 16:16

$request->input('status') これが正しく想定した値になっていることぐらいは確認してますか?
phper.k

2022/08/30 16:20

public function change_status(Request $request, SigningUp $signing_up) 第2引数がSigningUpなのに、 <form method='POST' action="{{ route('change_status', $sing_up_status->status_id) }}"> ここで、status_id を渡しているのもおかしい
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問