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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

0回答

1178閲覧

[PHP] 子テーブルの外部キーで紐付けた参照先の親テーブルのデータを表示させたい

Bo_Takuma

総合スコア5

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/12/12 09:55

実現したいこと

子テーブルに設けた外部キー設定のカラムから、親テーブルに紐づけたデータを参照・出力できるようにしたいです。

具体的には、子テーブルのproductsのcategory_idカラム経由で、参照元になるcategoriesテーブルのcategoryカラムにある文字列のデータを出力したいです。

##データベース

親テーブル : categories

database

1+------------+------------+------+-----+-------------------+-----------------------------+ 2| Field | Type | Null | Key | Default | Extra | 3+------------+------------+------+-----+-------------------+-----------------------------+ 4| id | int(11) | NO | PRI | NULL | auto_increment | 5| category | mediumtext | YES | | NULL | | 6| created_at | datetime | NO | | CURRENT_TIMESTAMP | | 7| updated_at | datetime | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 8+------------+------------+------+-----+-------------------+-----------------------------+ 9

子テーブル : products

daabase

1+-------------+-------------+------+-----+-------------------+-----------------------------+ 2| Field | Type | Null | Key | Default | Extra | 3+-------------+-------------+------+-----+-------------------+-----------------------------+ 4| id | int(11) | NO | PRI | NULL | auto_increment | 5| productname | varchar(20) | YES | | NULL | | 6| price | int(11) | YES | | NULL | | 7| description | mediumtext | YES | | NULL | | 8| category_id | int(11) | YES | MUL | NULL | | 9| imgpath | mediumtext | YES | | NULL | | 10| created_at | datetime | NO | | CURRENT_TIMESTAMP | | 11| updated_at | datetime | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 12+-------------+-------------+------+-----+-------------------+-----------------------------+

##状況

現在上記のデータ構造(MySQL)で設定しています。

子テーブルにあたるproductsテーブルのcategory_idに外部キーを設定済。
設定先(参照元)の親テーブルはcategoriesテーブルのidに指定しています。

Laravelではforeachで回したデータから->categoryで感じで参照できますが、

フルスクラッチでのPHP開発においては、どのようにすれば参照できるのでしょうか?
もし、PHPでの参照方法を知ってらっしゃれば教えてもらえると助かります。

##試したこと

現在foreachで回している以下の状況で試しましたが参照できませんでした。

php

1<?php foreach ($products as $product) : ?> 2             <div class="product-info"> 3 <div class="box-ad"> 4 <h2 class="product-title"><?php echo charconvert($product['productname']); ?></h2> 5 <p class="product-price">¥ : <?php echo charconvert($product['price']); ?></p> 6 <p class="product-description"><?php echo charconvert($product['description']); ?></p> 7 <p class=""><?php echo charconvert($product['category_id']['category']); ?></p> 8 </div> 9<div> 10<?php echo charconvert($product['category_id']); ?> // 出力◯ 11<?php echo charconvert($product['category_id']->$categories['category']); ?> // 出力× 12<?php echo charconvert($product['category_id']->['category']); ?> // 出力× 13<?php echo charconvert($product['category_id']['category']); ?> // 出力× 14</div> 15 </div> 16<?php endforeach; ?> 17 18<?php foreach ($products->$categories as $category) : ?> 19 <p><?php echo charconvert($category['category']); ?></p> // 出力× 20<?php endforeach; ?> 21 22<?php foreach ($products->categories as $category) : ?> 23 <p><?php echo charconvert($category['category']); ?></p> // 出力× 24<?php endforeach; ?> 25

category_idだけはproductsテーブルにある数字なので、出力ができる状態です。

フルスクラッチでのPHPの場合、このようにリレーションを組んだテーブルのデータはどのようにすれば参照が可能になるのでしょうか?

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問