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

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

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

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

Q&A

解決済

2回答

431閲覧

PHP withメソッドで子テーブルから親テーブルの情報を取得する際のエラーについて

HALU

総合スコア7

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

0グッド

0クリップ

投稿2022/12/08 23:10

前提

Laravel学習中でございます。
phpフレームワーク、Laravelを用いて、ECサイトを作成している最中でございます。

下記コード、該当箇所のみ抜粋して載せさせて頂きます。
その他、必要な情報ございましたら追記致します。

基本的な事は確認したつもりですが、スペルミス等、些細なミスでございましたら大変申し訳ございません。
ご回答宜しくお願い致します。

前提として、
DB:MySQL
Laravel:6系統

商品には複数の画像を登録可能
登録した画像はFileテーブルに保存される

親テーブル:Productテーブル(ID、商品名、値段etc...)
子テーブル:Fileテーブル(ID、product_id、path etc...)

実現したいこと

最終は一覧画面でProductの情報と登録された画像を表示させたい為、
if文を用いて商品画像が登録されていれば登録されている画像、
登録されていなければデフォルトの画像を変数としてviewに渡す予定でございますが、
その前段階の条件定義でエラーが発生しております。

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

Call to undefined relationship [product_id] on model [App\File].

該当のソースコード

//Fileモデル class File extends Model { //Productsテーブルのid=Filesテーブルのproduct_id public function product(){ return $this->belongsTo('App\Product'); } public function user(){ return $this->belongsTo('App\User'); } }

DisplayContoller

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Http\Controllers\DisplayController; 7use Auth; 8use App\File; 9use App\Product; 10use App\User; 11 12class DisplayController extends Controller 13{ 14 public function index(){ 15 $file = new File; 16            //↓エラー箇所 17 $file_img = $file->with('product_id')->get(); 18 19 dd($file_img); 20 return view('home',compact('file_img')); 21 }

備考

MySQLには複数形のsをつけて、テーブルが存在する
(ex:Products、Files)
そのため、belongsToの第2引数を指定は指定する必要なしとの認識でございます。

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

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

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

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

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

guest

回答2

0

ググるとリレーション先のクラスに ::class まで書く例が出てきますが、ここってなくても大丈夫なんでしょうか

php

1 // リレーション 2 public function product(){ 3 return $this->belongsTo('App\Product::class'); 4 }

投稿2022/12/09 02:03

yuma.inaura

総合スコア1453

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

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

phper.k

2022/12/09 02:35

App\Product::class でかく時は、「'」で囲んではいけません
guest

0

ベストアンサー

diff

1- $file_img = $file->with('product_id')->get(); 2+ $file_img = $file->with('product')->get();

投稿2022/12/09 00:51

phper.k

総合スコア3923

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問