gpt4 book ai didi

php - CodeIgniter 中具有表关联的产品的颜色数组

转载 作者:行者123 更新时间:2023-11-29 08:05:21 25 4
gpt4 key购买 nike

我的应用程序中有这三个表:

table: products
columns: id, name, price

table: colors
columns: id, name, products_count

table: product_colors
columns: id, product_id, color_id

就我而言,一个产品可以有多种颜色。这是我用来获取产品的查询:

SELECT products.id, products.name, products.price
FROM products

那么,如何通过数组获取特定产品的所有颜色呢?像这样的事情:

SELECT products.id, products.name, products.price, colors.name color
FROM products
LEFT JOIN product_colors ON product_colors.product_id = products.id
INNER JOIN colors ON colors.id = product_colors.color_id

上面的语法是怎么回事?

colors.name 列仅检索一种颜色。

在 PHP/CodeIgniter 中我只想做这样的事情:

view.php:

<h1><?php echo $product->name; ?></h1>
<div class="colors">
Colors available:
<?php foreach ($product->colors as $color) { ?>
<?php echo $color->name; ?>
<?php } ?>
</div>

这可以使用 native CodeIgniter 执行吗?我的意思是,没有 Doctrine 或其他 ORM?

最佳答案

您可以使用GROUP_CONCAT

最终的查询看起来像这样:

SELECT products.id, products.name, products.price, GROUP_CONCAT(colors.name ORDER BY colors.name SEPARATOR '+') colors
FROM products
LEFT JOIN product_colors ON product_colors.product_id = products.id
INNER JOIN colors ON colors.id = product_colors.color_id
GROUP BY products.id

然后在结果输出中:

[...]
$colorArray = explode("+", $product->colors); //this is your array of color names.

您可以使用 CodeIgniter 的 Active Record 来编写此内容。但是,它可能会导致大数据 block 的性能问题。

关于php - CodeIgniter 中具有表关联的产品的颜色数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com