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

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

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

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

Q&A

解決済

1回答

972閲覧

laravel 投稿のコメント機能 SQLSTATE[42S22]: Column not found

yuki911

総合スコア27

Laravel

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

0グッド

0クリップ

投稿2020/07/23 01:25

laravelでリレーションを使用してposts,commentテーブルを繋ぎ、投稿のコメント欄の制作をしています。

showページでコメントの入力をすると投稿表示されず、**SQLSTATE[42S22]: Column not found: 1054 Unknown column 'post_id' in 'field list' (SQL: insert into posts (post_id, comment, updated_at, created_at) values (32, ああ, 2020-07-23 10:18:14, 2020-07-23 10:18:14))**と出てしまいました。

commentとpost_idはhiddenでformから受け取っています。
リレーションのデータをdbに保存したりすることがうまくいっていないと思うので、アドバイスいただけるとありがたいです。

show.blade.php

@extends('layouts.app') @section('title', '詳細記事') @section('content') <div class="container mt-4"> <div class="border p-4"> <img src="{{ asset('storage/post_image/' . $post->path) }}"> <h1 class="h5 mb-4"> {{ $post->title }} </h1> <p class="mb-5"> {!! nl2br(e($post->body)) !!} </p> <section> <h2 class="h5 mb-4"> コメント </h2> {{ Form::open(['action' => 'CommentController@store', 'method' => 'post']) }} {{ Form::textarea('comment', '', ['id' => 'body', 'size' => '50x3']) }} {{ Form::hidden('post_id',$post->id) }} <div> {{ Form::submit('コメントする', ['class' => 'btn btn-primary']) }} </div> {{ Form::close() }} @forelse((array)$post->comments as $comment) <div class="border-top p-4"> <time class="text-secondary"> {{ $comment->created_at->format('Y.m.d H:i') }} </time> <p class="mt-2"> {!! nl2br(e($comment->commetnt)) !!} </p> </div> @empty <p>コメントはまだありません。</p> @endforelse </section> </div> </div> @endsection

index.blade.php

@extends('layouts.app') @section('title', '投稿アプリ') @section('content') @section('maincopy', '投稿してください') <!-- form --> {{ Form::open(['action' => 'PostController@index', 'method' => 'post' , 'enctype' => 'multipart/form-data']) }} <p>タイトル<br/>{{ Form::text('title', '', ['id' => 'title', 'size' => 50]) }}</p> <p>内容<br/>{{ Form::textarea('body', '', ['id' => 'body', 'size' => '50x3']) }}</p> {{ Form::file('path') }} <div> {{ Form::submit('投稿', ['class' => 'btn btn-success btn-lg']) }} </div> {{ Form::close() }} </div> </section> <!-- 投稿部分 --> @if(count($items) > 0) @foreach($items as $item) <a href="{{ route('post.show', [$item->id]) }}"> <div class="album py-5 bg-light"> <div class="container"> <div class="row"> <div class="col-md-4"> <div class="card mb-4 shadow-sm"> <img src="{{ asset('storage/post_image/' . $item->path) }}"> <div class="card-body"> <p class="card-text">{{ $item->title}}</p> <p class="card-text">{{ $item->body}}</p> <div class="d-flex justify-content-between align-items-center"> <div class="btn-group"> <button type="button" class="btn btn-sm btn-outline-secondary">編集</button> <button type="button" class="btn btn-sm btn-outline-secondary">削除</button> </div> @if ($item->comment->count()) <span class="badge badge-primary"> コメント {{ $item->comment->count() }}件 </span> @endif <small class="text-muted">{{ $item->created_at}}</small> </div> </div> </div> </div> </div> </div> </div> </a> @endforeach @else <div>投稿記事がありません</div> @endif @endsection

CommentController.php

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests\CommentRequest; use App\Models\Post; use App\Models\Comment; class CommentController extends Controller { public function store(CommentRequest $request) { $post = Post::findOrFail($request->post_id); $post->comment = $request->comment; $post->save(); return redirect()->route('post.show', compact('post')); } }

comment.php

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Comment extends Model { protected $fillable = [ 'comment', 'post_id', ]; public function post() { return $this->belongsTo('App\Models\Post'); } }

post.php

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = [ 'title', 'body', 'path', ]; public function comment() { return $this->hasMany('App\Models\Comment'); } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

insert into posts (post_id, comment, updated_at, created_at) values (32, ああ, 2020-07-23 10:18:14, 2020-07-23 10:18:14))

エラ〜メッセージにでているこれを見ると、コメント じゃなくて posts に挿入しようとしてるな。

投稿2020/07/23 02:15

phper.k

総合スコア3923

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問