Gui*_*nge 1 php mysql codeigniter
有三个表在我的应用程序:products,sizes和product_sizes.
结构是这样的:
产品表:
id INT(11)
name VARCHAR(48)
Run Code Online (Sandbox Code Playgroud)
尺寸表:
id INT(11)
name VARCHAR(48)
Run Code Online (Sandbox Code Playgroud)
product_sizes'表:
id INT(11)
product_id INT(11)
size_id INT(11)
Run Code Online (Sandbox Code Playgroud)
如您所见,有些产品有三种尺寸.我需要向用户展示这三种尺寸的名字.
我现在在PHP中有什么:
index.php(查看)
<?php
[...]
foreach ($products as $product) {
echo $product->name; // for each item, show its name
}
Run Code Online (Sandbox Code Playgroud)
我希望迭代大小就像那样:
<?php
[...]
foreach ($products as $product) {
[...]
echo $product->name;
foreach($product->sizes as $size) {
echo $size; // for each item, shows its available sizes (s, M, L, for example)
}
}
Run Code Online (Sandbox Code Playgroud)
如何以与上述一致的方式使尺寸与产品一起工作?
我的查询现在是:
SELECT products.id, products.name, sizes.name FROM products
JOIN product_sizes ON product_sizes.product_id = products.id
JOIN sizes ON product_sizes.size_id = sizes.id
Run Code Online (Sandbox Code Playgroud)
我标记为CodeIgniter,因为如果有办法通过其ACtiveRecord解决这个问题,没问题,因为我的应用程序运行在CI的顶部.您可以正常分享您的解决方案.
您可以在SQL查询中使用GROUP_CONCAT()在一列中连接多个大小,然后处理该单元格值.
SELECT products.id, products.name, GROUP_CONCAT( sizes.name ) available_sizes
FROM products
JOIN product_sizes ON product_sizes.product_id = products.id
JOIN sizes ON product_sizes.size_id = sizes.id
group by products.id
Run Code Online (Sandbox Code Playgroud)
在PHP中,您可以使用它如下.
foreach ($products as $product) {
[...]
echo $product->name;
$available_sizes=explode(",",$product->available_sizes);
foreach($available_sizes as $size) {
echo $size; // for each item, shows its available sizes (s, M, L, for example)
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |