質問するログイン新規登録
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

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

PHP

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

Q&A

解決済

1回答

316閲覧

Laravelの掲示板で投稿したユーザーと内容を投稿一覧に反映させたい

moana

総合スコア11

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

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

PHP

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

0グッド

0クリップ

投稿2023/07/12 08:10

0

0

実現したいこと

  • Laravelの掲示板で投稿したユーザーと内容を投稿一覧に反映させたい

前提

Laravelで掲示板を作成しています。
新規投稿画面でログインしているユーザー名を名前欄に表示し、投稿内容を入力できるようにしています。
ここに入力されているユーザー名と内容をcreateFormメソッドに渡し、投稿一覧(index.blade.php)に表示したいです。

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

Illuminate\Database\QueryException SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'contents' cannot be null (SQL: insert into `posts` (`contents`) values (?)) http://127.0.0.1:8000/post/create

該当のソースコード

PostController.php

1public function create(Request $request) //$request変数に値が渡される 2 { 3 $contents = $request->input('newContents'); 4 DB::table('posts')->insert([ 5 'contents' => $contents 6 ]); 7 $name = $request->input('userName'); 8 DB::table('posts')->insert([ 9 'user_name' => $name 10 ]); 11 return redirect('/index');//index.blade.phpに遷移 12 }

createForm.blade.php

1@extends('layouts.app') <!--「app.blade.php」の方が親となり、「index.blade.php」の方が子のビューファイルとなる--> 2@section('content') <!--囲っている部分の名前付け--> 3<div class='container'> 4 <h2 class='page-header'>新しく投稿する</h2> <!--小見出し--> 5 {!! Form::open(['url' => 'post/create']) !!} <!--urlが 'post/create' となっているところにフォームの値を送る--> 6 <div class="form-group"> 7 {{ Form::label('user_name', '名前:') }} <!-- デフォルトでユーザー登録した名前を入力しておく。ユーザーの判断で変更可能 --> 8 {{ Form::input('text', 'userName', Auth::user()->name) }} 9 </div> 10 <div class="form-group"> 11 {!! Form::input('text', 'newContents', null, ['required', 'class' => 'form-control', 'placeholder' => '投稿内容']) !!} 12 </div> 13 <button type="submit" class="btn btn-success pull-right">追加</button> 14 {!! Form::close() !!} 15</div> 16@endsection

index.blade.php

1@extends('layouts.app') <!--「app.blade.php」の方が親となり、「index.blade.php」の方が子のビューファイルとなる--> 2@section('content') <!--囲っている部分の名前付け--> 3<div class='container'> <!--containerクラス--> 4 <p class="pull-right"><a class="btn btn-success" href="/create-form">投稿する</a></p> <!--投稿するボタン--> 5 <h2 class='page-header'>投稿一覧</h2> <!--タイトル--> 6 <table class='table table-hover'> <!--表--> 7 <tr> <!--表の1行--> 8 <th>名前</th> <!--表の見出し--> 9 <th>投稿内容</th> <!--表の見出し--> 10 <th>投稿日時</th> <!--表の見出し--> 11 <th></th> <!--表の見出し--> 12 <th></th> <!--表の見出し--> 13 </tr> 14 @foreach ($lists as $list) <!--$listsに入っている値を$listに格納し順番に表示--> 15 <tr> <!--containerクラス--> 16 <td>{{ $list->user_name }}</td> <!--$listの中のusernameを表示--> 17 <td>{{ $list->contents }}</td> <!--$listの中のcontentsを表示--> 18 <td>{{ $list->created_at }}</td> <!--$listの中のcreated_atを表示--> 19 <td><a class="btn btn-primary" href="/post/{{ $list->id }}/update-form">更新</a></td> <!--更新ボタン--> 20 <td><a class="btn btn-danger" href="/post/{{ $list->id }}/delete" onclick="return confirm('こちらの投稿を削除してもよろしいでしょうか?')">削除</a></td> <!--削除ボタン--> 21 </tr> 22 @endforeach <!--foreach文を閉じる--> 23 </table> 24</div> 25@endsection

試したこと

カラム作成時にnot nullは入力されていない
マイグレーションファイルの見直し
渡す変数が誤っていないか確認

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

自己解決

下記のコードで実装できました。

public function createForm() //createFormメソッド
{
return view('posts.createForm'); //postsディレクトリの中にあるcreateForm.blade.phpを呼び出す
}
public function create(Request $request) //$request変数に値が渡される
{
$contents = $request->input('newContents');
$name = $request->input('userName');
DB::table('posts')->insert([
'contents' => $contents,
'user_name' => $name
]);
return redirect('/index');//index.blade.phpに遷移
}

投稿2023/07/13 13:25

moana

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問