エラー内容
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.id' in 'where clause' (SQL: select * from
products
whereproducts
.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, ]); } }
回答2件
あなたの回答
tips
プレビュー