我有类别表。表3中的一个项目可能有多个类别。三个表格如下:
表1:
ID Item_id
1 1
2 2
3 3
4 4
5 5
表2:
ID Item_id Category
1 1 catId_1
2 2 catId_1
3 2 catId_2
4 3 catId_2
5 3 catId_3
6 3 catId_4
7 4 catId_2
8 5 catId_1
etc.
第三个表只有类别名称的信息:
表3:
Category_id category_name
catId_1 cats
catId_2 dogs
catId_3 IT_managers
catId_4 Trump_lovers
我做了一个查询来获取所有项目的PDO对象,并且能够从php中获取每个项目的类别。
首先查询:
public function getCategories(){
$this->db->query('SELECT table1.*, table2.*, table3.*
FROM table1
INNER JOIN table2
ON table1.item_id = table2.item_id
INNER JOIN table3
ON table2.category=table3.category_id');
$results = $this->db->resultset();
return $results;}
$items = $offer_class -> getCategories();
如何获取foreach循环中每个项目的所有类别名称?
我已尝试过这个foreach循环,但它只为每个项目提供了第一个类别:
<?php foreach($items as $item){
echo $item->category_name;
}
?>
答案 0 :(得分:0)
您可以在2个查询中将其拆分。 - 一个查询,用于查找Table1,Table2中所需的查询以及查找与项目匹配的category_name的其他查询。
在你的foreach循环中,你将创建一个新的foreach循环,列出category_name数据。
关于你的评论,你可以这样做:
<?php
$items = array("test", "test2",array("CAT1","CAT2","CAT3","CAT4"));
foreach($items as $t)
{
if(!is_array($t))
{
echo $t;
}
else
{
foreach($t as $ar)
{
echo $ar . " ";
}
}
}