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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1041閲覧

Column not found エラー

berukanp

総合スコア15

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/09/26 15:29

エラー内容

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.id' in 'where clause' (SQL: select * from products where products.id = 1 limit 1)

実装したいこと

indexページからshowページにリンクを飛ばしたい。

エラー内容を見ると、'products.id'がカラムにないと書いてあります。
**$table->increments('product_id');**と記述してカラムを作りました。
'product_id'**をshowページに渡して表示させようと考えたのですが上記のエラーが出てしまいました。どの様に記述すればページが表示できるのか教えていただけたら助かります。
始めたばかりなので、質問内容がおかしかったりズレていたらすいません。
よろしくお願いします。


index.blade.php

@extends('layouts.app') @section('content') @if (count($products) > 0) @foreach ($products as $product) <div class="col-xs-12"> <p style = "padding-top: 100px;"><img src='{{ $product->product_image }}' width="200" height="130" align="left" hspace="10"/></p> <h2>{{ $product->product_name }}</h2> <p>{{ $product->product_description }}</p> <p>{!! link_to_route('products.show',$product->product_id, ['id' => $product->product_id]) !!}: {{ $product->product_name }}</p> <hr> </div> @endforeach @endif @endsection

show.blade.php

@extends('layouts.app') @section('content') <h1> id = {{ $product->product_id }}のメッセージ詳細ページ</h1> <p>{{ $product->product_description }}</p> @endsection

products_table

public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('product_id'); $table->string('product_cat'); $table->string('product_name'); $table->text('product_description'); $table->string('product_image'); $table->timestamps(); });

web.php

Route::get('/', 'ProductsController@index'); Route::get('products/{product_id}', 'ProductsController@show'); Route::get('products', 'ProductssController@index'); Route::resource('products', 'ProductsController');

ProductsContoroller

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Product; class ProductsController extends Controller { public function index() { $products = Product::all(); return view('products.index',[ 'products' => $products, ]); } public function show($id) { $product = Product::find($id); return view('products.show', [ 'products' => $products, ]); } }

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/09/26 21:53

products.id と products.product_id は別物のような
berukanp

2018/09/27 00:51

解答ありがとうございます。では新たにproducts.idをカラムに追加しなければいけないということでしょうか?
guest

回答2

0

ベストアンサー

laravelで、EloquentモデルでDBを扱う場合、「テーブル定義の規約」があります。

例えば

●テーブル名は、クラス名を複数形の「スネークケース」にしたもの
●プライマリーキーは、カラム名が id で、オートインクリメントする整数値
●作成日は、カラム名が created_at で、・・・・・・・

といった感じに。(他にもまだあります)

これらの規約は「絶対」ではないので、変更は可能ですが、変更点はモデルクラスに記述する必要があります。

今回の場合、products.product_idは、productsテーブルのプライマリーキーとして使うつもりで作ったカラムかと思いますので、
プライマリキーをidの代わりにproduct_idにするよ、
というのを、productsのモデルクラスに書けば良いんじゃないかと思います。。。

詳しくは、リファレンス読みましょう

投稿2018/09/27 02:52

mix-peach

総合スコア1910

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

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

0

Unknown column 'products.id'

よく見てみて下さい。
productsid の間に . (ドット) が入っていますよね。
これは productsテーブルのidカラムがわからないよ と言われています。
なので足りないのは product_id カラムではなく id カラムです。

$table->increments('id');

先の回答者さんと同じになりますが詳しくはドキュメントを見て下さい。

投稿2018/09/27 06:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

berukanp

2018/09/27 07:26

解答ありがとうございます。 ('id')を('product_id')に書き換えてもそのまま使えると思ってました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問