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

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

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

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

PHP

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

Q&A

1回答

639閲覧

テーブルに情報を追加したい

hirofumiimoto

総合スコア12

Laravel

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

PHP

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

0グッド

0クリップ

投稿2020/03/16 13:31

前提・実現したいこと

laravelで日本史の質問アプリを作成しています。
質問ページで質問を書き、その質問内容をトップページに反映させたいのですが、できません。いろいろ調べてみて分かったことは、テーブルに質問の内容が保存されていないということです。テーブルに情報を保存する方法を教えていただけると幸いです。

post/index.blade.php(質問するページ)

laravel

1@extends("layouts.common") 2 3@include('layouts.head') 4 5@section("title", "jhpostホーム") 6 7@include('layouts.header') 8 9@section("content") 10<div class="container pt-140 pb-140"> 11 <a href="/question">トップページへ</a> 12 <form action="/post"> 13 @csrf 14 <div class="form-group"> 15 <label for="question_id">質問の題名</label> 16 <input class="form-control" type="text" name="title" id="question_id"> 17 </div> 18 <div class="form-group"> 19 <label for="category_select">カテゴリー</label> 20 <select class="form-control" name="category_master_id" id="category_select"> 21 <option value=0>選択</option> 22 @foreach($categoryMasters as $categoryMaster) 23 <option value="{{$categoryMaster->id}}">{{$categoryMaster->name}}</option> 24 @endforeach 25 </select> 26 </div> 27 <div class="form-group"> 28 <label for="quesion_content">質問の内容</label> 29 <textarea class="form-control" name="content" id="question_content" cols="30" rows="10"></textarea> 30 </div> 31 <a href="/question"><button>質問する</button></a> 32 </form> 33 34</div> 35@endsection 36@include('layouts.footer') 37

QuestonController

laravel

1<?php 2 3namespace App\Http\Controllers; 4use App\Question; 5use App\CategoryMaster; 6use Illuminate\Http\Request; 7 8class QuestionController extends Controller 9{ 10 public function index(){ 11 $questions = Question::all(); 12 $questions = Question::paginate(2); 13 return view("question.index", ["questions" => $questions]); 14 } 15 16 public function post(Request $request){ 17 $categoryMasters = CategoryMaster::all(); 18 return view("post.index", ["categoryMasters" => $categoryMasters]); 19 } 20 21 public function save(Request $request){ 22 $question = New Quesiton; 23 $question->title = $request->title; 24 $question->category_master_id = (int)$request->category_master_id; 25 $question->content = $request->content; 26 $question->save(); 27 return redirect("/question"); 28 } 29} 30

###question/index.blade.php(トップページ)←不必要かもしれませんが、一応載せておきます。

laravel

1@extends("layouts.common") 2 3@include('layouts.head') 4 5@section("title", "jhpostホーム") 6 7@include('layouts.header') 8 9@section("content") 10 11<section class="bg-dark-30 showcase-page-header module parallax-bg" data-background="assets/images/showcase_bg.jpg"> 12 <div class="titan-caption"> 13 <div class="caption-content"> 14 <div class="font-alt mb-30 titan-title-size-1"> 日本史をもっと知ろう!</div> 15 </div> 16 </div> 17</section> 18<div class="main showcase-page"> 19 <section class="module-extra-small bg-dark"> 20 <div class="container"> 21 <div class="row"> 22 <div class="col-sm-6 col-md-8 col-lg-9"> 23 <div class="callout-text font-alt;"> 24 <h4 style="margin-top: 0px;">Start Creating Beautiful Websites</h4> 25 <p style="margin-bottom: 0px;">Download Titan Free today!</p> 26 </div> 27 </div> 28 <div class="col-sm-6 col-md-4 col-lg-3"> 29 <div class="callout-btn-box"><a class="btn btn-border-w btn-circle" href="https://themewagon.com/themes/titan/">Downlaod Free</a></div> 30 </div> 31 </div> 32 </div> 33 </section> 34 35 {{-- レコード反映 --}} 36 <section class="module-medium" id="demos"> 37 <div class="container"> 38 <nav> 39 <ul> 40 <li class="pull-left list-unstyled">全て</li> 41 <li class="pull-left list-unstyled">未解決</li> 42 <li class="pull-left list-unstyled">解決済み</li> 43 </ul> 44 </nav> 45 <div class="row multi-columns-row"> 46 <table class="table table-hover"> 47 <thead> 48 <tr> 49 <th>回答数</th> 50 <th>題名</th> 51 <th>カテゴリー</th> 52 <th>ユーザー名</th> 53 <th>投稿日</th> 54 </tr> 55 </thead> 56 @foreach($questions as $question) 57 <tbody> 58 <tr> 59 <th>回答数</th> 60 <th>{{$question->title}}</th> 61 <th>{{$question->categoryMaster->getData()}}</th> 62 <th>{{$question->user->getData()}}</th> 63 <th>{{$question->created_at}}</th> 64 </tr> 65 </tbody> 66 @endforeach 67 </table> 68 </div> 69 {{ $questions->links() }} 70 </div> 71 </section> 72 73 @endsection 74 75 @include('layouts.footer')

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

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

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

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

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

guest

回答1

0

以下、Laravelのバージョンを5.6か7辺りだと仮定して記載します(バージョンによってroutesの定義場所等に若干の違いはありますが、その辺りは割愛)。

こちら、QuestionControllerのsaveメソッドでデータを保存しようとされていると思うのですが、このメソッドを呼べていないのではないでしょうか?

■(おそらく)直接の原因
・post/index.blade.php(質問するページ)
に質問入力フォームがあるのに "submit"ボタンがない(<button>はあるものの、<a>タグで囲ってしまっているのでformの入力値を持ち回れていない)。

 対応:
現在の「質問する」ボタン( <a href="/question"><button>質問する</button></a> )を外して、代わりに
<input type="submit" name="saveButton" value="質問する">
というsubmitボタン(nameやvalueは仮です)をform内(<form ~></form> の間)に置く

■確認したほうが良さそうな点
・ルーティング設定
https://readouble.com/laravel/5.6/ja/routing.html
routes/web.phproutes/api.php に、Questionコントローラーのsaveメソッドを呼び出すためのルーティング設定をしているか
→その設定を確認する。
もし、 Route::get('/post', 'QuestionController@save'); 以外であればpost/index.blade.php(質問するページ)のformタグの修正が必要。

 ありそうな設定例: Route::post('/question/save', 'QuestionController@save');

<form action="/post"> → <form action="/question/save" method="POST">

なお、下記のサイトにて「簡単な入力フォームを作ってデータを保存するまで」の実装方法が説明されているので、参考になるかと思います。
https://laravel10.wordpress.com/2015/03/08/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElaravel-5-16-form%E3%81%AE%E4%BD%9C%E6%88%90/

投稿2020/03/16 14:47

nak

総合スコア696

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

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

hirofumiimoto

2020/03/17 08:18

返答ありがとうございます! nakさんに教えていただいた通りform内のボタンを変更しました! 変更したのはいいのですが、次はQuestoinController(初めに質問させていただいたときに上記で掲載させていただきました。)の22行目の$question = new QuestionでClass 'App\Http\Controllers\Quesiton' not foundというエラー文が出てしまいました。 どうすれば解決できるでしょうか?
hirofumiimoto

2020/03/17 09:06

すいません! スペルミスでした! ありがとうございました!
nak

2020/03/18 05:09

@hirofumiimoto 解決したなら何よりです。 https://teratail.com/help#resolve-question を参考に、この質問を「解決済み」にしてください!(他の回答者さんが「未解決なのかな?」と思ってしまうため) なお、もし他の点で質問が出てくるようなら、この質問はいったん「解決済み」にして、別途質問を立てていただくと良いかと思います(QAサイトのQAは「同じようなことで困った人のためのもの」でもあるので。1つの質問に含まれている課題は明確なほうが「同じようなこと」が探しやすくて嬉しいです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問