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

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

1回答

273閲覧

テーブルの情報を使って、他テーブルの情報を取得したい

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/22 16:33

前提

phpのフレームワーク Laravel6系を使用し、ECサイトを作成中

実現したいこと

購入履歴を表示する際に、商品画像と商品情報を持ってきたい
(getで取得した情報で他テーブルの情報を取得したい)

テーブル名…カラム
Files…id、product_id、product_id、user_id、path etc
※商品には複数画像登録可能、user_idはプロフィール画像登録用

Product...id、name、price etc(商品名や値段等の商品の情報)

ordered_items…id、user_id、product_id、price etc
(購入したuserのid、購入したproductのid、購入した商品の値段他)

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

欲しい値が返ってこない arrayでFileテーブルからid=0、product_id=0のレコードが返ってきている (id=0は画像が登録されていなかった時に使用するデフォルト画像の情報)

該当のソースコード

controller

1public function orderd_by_lists(){ 2 $file = new File; 3 $product = new Product; 4 $orderd_by = new orderd_item; 5 $orderd_items = $orderd_by->where('user_id',auth::user()->id); 6 7 $orderd_product_ids = $orderd_items->get('product_id'); 8 // dd($orderd_product_id); 9 foreach($orderd_product_ids as $orderd_product_id){ 10 $files = File::where('product_id',$orderd_product_id)->get(); 11 } 12 dd($files); 13 return view('orderd_by_lists'); 14 }

補足

流れは
行4:orderd_itemsテーブルからuser_id(購入したuserのid)と自分のidが一致しているものを取得、

行7:上記からproduct_idのみを取得
行10:Fileテーブルのproduct_idが行7で取得したproduct_idと一致するもののみ取得

この後、行10で一致した情報を変数に渡し、viewで$file->pathで画像表示予定
行4の情報を使って、name(商品名)、price(商品の値段)を表示

調べ方が悪いのか、解決に繋がる情報を見つける事ができておりません。
テーブルの1つの値を取得し、その値を用いて、他テーブルの情報を取得する、という事なのですが、どのようにしたら良いのかご教示いただければ幸いでございます。

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

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

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

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

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

guest

回答1

0

根本から間違ってるのでリレーションを覚えるのが先。
https://laravel.com/docs/9.x/eloquent-relationships

migrationの段階で外部キー制約も
https://laravel.com/docs/9.x/migrations#foreign-key-constraints

ここのコードは典型的なPHP初心者がやりがちなミスなのでLaravelの前にPHPの学習が必要。

php

1foreach($orderd_product_ids as $orderd_product_id){ 2 $files = File::where('product_id',$orderd_product_id)->get(); 3}

投稿2022/12/22 23:31

kawax

総合スコア10377

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問