実現したいこと
子テーブルに設けた外部キー設定のカラムから、親テーブルに紐づけたデータを参照・出力できるようにしたいです。
具体的には、子テーブルの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の場合、このようにリレーションを組んだテーブルのデータはどのようにすれば参照が可能になるのでしょうか?
あなたの回答
tips
プレビュー