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

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

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

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

PHP

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

Q&A

解決済

1回答

544閲覧

Laravelを使用して、データを挿入したい

royal1997

総合スコア3

Laravel

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

PHP

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

0グッド

0クリップ

投稿2021/04/26 12:33

編集2021/04/27 11:27

現在Laravelを勉強中です。
そこで、フォームでPOST送信したのをテーブルに追加する作業を行っているのですが、機能しません。
コードの間違いなどを確認しましたが、特に問題は無さそうで困っています。
コードは下記の通りです。
dd($request->all())について
dd($request->all())の内容がブラウザに表示されていません。
web.phpでルートのpostを除けると、POSTがサポートされていないと出ているので,web.phpでアクセスは検知しているものの、その後のコントローラーの処理が実行されない状況です。
お分かりの方いましたら、ご教授お願いします。

web.php

1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14use App\Http\Middleware\HelloMiddleware; 15 16Route::get('board', 'BoardController@index'); 17 18Route::get('board/add', 'BoardController@add'); 19 20Route::post('board/add', 'BoardController@create');

add.blade.php

1@extends('layouts.helloapp') 2@section('title', 'Board.Add') 3@section('menubar') 4@parent 5投稿ページ 6@endsection 7 8@section('content') 9<table> 10<form action="/board/add" method="post"> 11 @csrf 12 <tr><th>person id: </th><td><input type="number" 13 name="person_id"></td></tr> 14 <tr><th>title: </th><td><input type="text" 15 name="title"></td></tr> 16 <tr><th>message: </th><td><input type="text" 17 name="message"></td></tr> 18 <tr><th></th><td><input type="submit" 19 value="send"></td></tr> 20</form> 21</table> 22@endsection 23 24@section('footer') 25copyright 2020 tuyano. 26@endsection

BoardController.php

1<?php 2 3namespace App\Http\Controllers; 4 5use App\Board; 6use Illuminate\Http\Request; 7 8class BoardController extends Controller 9{ 10 public function index(Request $request) 11 { 12 $items = Board::all(); 13 return view('board.index', ['items' => $items]); 14 } 15 public function add(Request $request) 16 { 17 $items = Board::all(); 18 return view('board.add', ['items' => $items]); 19 } 20 public function create(Request $request) 21 { 22 $this->validate($request, Board::$rules); 23 $board = new Board; 24 dd($request->all()); 25 $form = $request->all(); 26 unset($form['__token']); 27 $board->fill($form)->save(); 28 return redirect('/board'); 29 } 30} 31

Board.php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Board extends Model 8{ 9 protected $guarded = array('id'); 10 11 public static $rules = array( 12 'person' => 'required', 13 'title' => 'required', 14 'message' => 'required' 15 ); 16 17 public function getData() 18 { 19 return $this->id . ':' . $this->title . '(' . $this->person->name . ')'; 20 } 21 public function person() 22 { 23 return $this->belongsTo('App\Person'); 24 } 25} 26

create_board_table

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

イメージ説明
![イメージ説明]
上の写真の通り、値を送信するとそのままboard/addにもう一度アクセスした状態となります。
laravel6

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

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

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

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

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

AbeTakashi

2021/04/26 13:28

use App\Board; となってますので、その対象ファイルである app/Board.php も合わせて提示されると答えが出てくるかもしれません。おそらく php artisan make:migration で作ったModelクラスなのだとは思いますが、そのファイルが正しくない可能性があります。あと、データベースの定義も開示していただくと、より回答が出やすくなるかと思います。ログもなくエラーも出ないとなると、ちょっとこれだけの情報では回答する人にとっては手がかりがなさそうです。
satokei

2021/04/26 14:08

> web.phpでpost送信をされたの検知はしているのですが、 これはどのような意味でしょうか?
m.ts10806

2021/04/26 14:42

>特にエラーが出ている訳でもありません。 ログを確認したうえで記載してください。 画面上に出るものが全てとは限りません。
AbeTakashi

2021/04/27 01:16 編集

ぱっと見だと問題無さそうに見えますね。dd($request->all()); の内容がブラウザに表示されるってことですよね? ddの行を外してもDBに登録されないのであれば、それ以降の行で何かしら不具合があるということだと思います。1行ずつしてみたり、ddで同様に変数の中身をチェックしたりして、どの行で不具合が起きてるかチェックする必要がありそうです。
royal1997

2021/04/27 06:18

dd($request->all())について dd($request->all())の内容がブラウザに表示されていません。 web.phpでルートのpostを除けると、POSTがサポートされていないと出ているので,web.phpでアクセスは検知しているものの、その後のコントローラーの処理が実行されない状況です。
AbeTakashi

2021/04/27 06:31

なるほど、その情報はすごく大切な情報なので、質問文に追記した方が良いでしょう。「web.phpでpost送信をされたの検知はしている」という表現も分かりにくかったのですが、なんとなく意味が分かりました。この部分も詳しく書いた方が良いでしょう(satokeiさんも分かってないみたいでしたので)。そうすると、フォームのボタンを押した後はコントローラーのどのメソッドにたどり着いて、どのような画面が出ているのでしょうか? そのあたりの情報もしっかり記載した方が良いと思います。現状のソースコードを見る限りではちょっと気づけなさそうので、その辺の周辺情報により正しい回答が出てくるかもしれません。
royal1997

2021/04/27 11:28

ご指摘ありがとうございます。 写真を追加してみましたので、ご確認いただけると幸いです。 本当にありがとうございます!
guest

回答1

0

ベストアンサー

とりあえずではありますが、コントローラーを

Route::get('board/add', 'BoardController@add')->name('borad.add'); Route::post('board/add', 'BoardController@create')->name('borad.create');

として、テンプレート側を

<form action="/board/add" method="{{ route('borad.create') }}">

としてみたらどうでしょう。これでダメなら 'board/add' が被っているのを別々にしてみるとか。本来はgetとpostで区別してるのでこんなことしなくても問題ないはずですが、nginxのrewriteとかに引っかかってるパターンとかかもしれません。

投稿2021/04/27 13:14

AbeTakashi

総合スコア4853

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

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

royal1997

2021/04/28 06:54

ご回答ありがとうございます。実行してみた結果変わりませんでした。 ご指摘の通り、board/addをstoreに変更してもダメでした。
AbeTakashi

2021/04/28 08:04

んーーーー、謎ですね・・・ 一応、php artisan route:list の表示を見てもらって良いですか? 何か気づけるかもしれません。 あと"laravel post getになる"というキーワードでググると色々出てくると思います。同じような事象がけっこう起きてますが、ちょっと想像つかないようなことから起きてる場合もありますので、何か同じような事象が起きてないか調べてみると良いかもしれません。
royal1997

2021/04/28 12:31

``` +--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | board | | App\Http\Controllers\BoardController@index | web | | | GET|HEAD | board/add | borad.add | App\Http\Controllers\BoardController@add | web | | | POST | board/add | borad.create | App\Http\Controllers\BoardController@create | web | | | GET|HEAD | hello | | App\Http\Controllers\HelloController@index | web,auth | | | POST | hello | | App\Http\Controllers\HelloController@post | web | | | GET|HEAD | hello/add | | App\Http\Controllers\HelloController@add | web | | | POST | hello/add | | App\Http\Controllers\HelloController@create | web | | | GET|HEAD | hello/auth | | App\Http\Controllers\HelloController@getAuth | web | | | POST | hello/auth | | App\Http\Controllers\HelloController@postAuth | web | | | GET|HEAD | hello/del | | App\Http\Controllers\HelloController@del | web | | | POST | hello/del | | App\Http\Controllers\HelloController@remove | web | | | GET|HEAD | hello/edit | | App\Http\Controllers\HelloController@edit | web | | | POST | hello/edit | | App\Http\Controllers\HelloController@update | web | | | GET|HEAD | hello/rest | | App\Http\Controllers\HelloController@rest | web | | | GET|HEAD | hello/session | | App\Http\Controllers\HelloController@ses_get | web | | | POST | hello/session | | App\Http\Controllers\HelloController@ses_put | web | | | GET|HEAD | hello/show | | App\Http\Controllers\HelloController@show | web | | | GET|HEAD | home | home | App\Http\Controllers\HomeController@index | web,auth | | | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest | | | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest | | | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web | | | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest | | | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest | | | POST | password/reset | password.update | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest | | | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest | | | GET|HEAD | person | | App\Http\Controllers\PersonController@index | web | | | GET|HEAD | person/add | | App\Http\Controllers\PersonController@add | web | | | POST | person/add | | App\Http\Controllers\PersonController@create | web | | | GET|HEAD | person/del | | App\Http\Controllers\PersonController@delete | web | | | POST | person/del | | App\Http\Controllers\PersonController@remove | web | | | GET|HEAD | person/edit | | App\Http\Controllers\PersonController@edit | web | | | POST | person/edit | | App\Http\Controllers\PersonController@update | web | | | GET|HEAD | person/find | | App\Http\Controllers\PersonController@find | web | | | POST | person/find | | App\Http\Controllers\PersonController@search | web | | | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest | | | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest | | | GET|HEAD | rest | rest.index | App\Http\Controllers\RestappController@index | web | | | POST | rest | rest.store | App\Http\Controllers\RestappController@store | web | | | GET|HEAD | rest/create | rest.create | App\Http\Controllers\RestappController@create | web | | | GET|HEAD | rest/{rest} | rest.show | App\Http\Controllers\RestappController@show | web | | | PUT|PATCH | rest/{rest} | rest.update | App\Http\Controllers\RestappController@update | web | | | DELETE | rest/{rest} | rest.destroy | App\Http\Controllers\RestappController@destroy | web | | | GET|HEAD | rest/{rest}/edit | rest.edit | App\Http\Controllers\RestappController@edit | web | +--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+ ``` 他のルートも設定しているため長くなっております。すみません。 分かりました!とりあえずこちらは一旦解決済みとさせて頂いて、またわからないようでしたら、もう一度質問してみます!ご協力いただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問