【发布时间】:2018-08-01 11:06:56
【问题描述】:
我写了这个查询:
SELECT p.category, r.id, r.code, u.hash_name, r.created_at, r.updated_at FROM uploads AS u
JOIN refrigerators AS r ON u.id=r.image
JOIN products_refrigerators AS pr ON pr.refrigerator_id=r.id
JOIN products p ON pr.product_id = p.id
结果如下:
Array
(
[0] => stdClass Object
(
[category] => lamps
[id] => 1
[code] => canopy
[path] => public/uploads/AAmAnnC2Yoij9QblcybTJefE5vTQrNZsfDCWqOPt.jpeg
[created_at] => 2018-02-21 11:15:06
[updated_at] => 2018-02-21 11:15:06
)
[1] => stdClass Object
(
[category] => panels
[id] => 1
[code] => canopy
[path] => public/uploads/AAmAnnC2Yoij9QblcybTJefE5vTQrNZsfDCWqOPt.jpeg
[created_at] => 2018-02-21 11:15:06
[updated_at] => 2018-02-21 11:15:06
)
[2] => stdClass Object
(
[category] => lamps
[id] => 2
[code] => canopy2
[path] => public/uploads/nqDT4gEXbF0opPmEpa1cPo5iPSulRoesYcgHiOA3.jpeg
[created_at] => 2018-02-21 11:17:44
[updated_at] => 2018-02-21 11:17:44
)
[3] => stdClass Object
(
[category] => lamps
[id] => 3
[code] => QWE
[path] => public/uploads/0TSrz6j3JJH17XgEs2161mOh8aYgDikujdYwrCWR.jpeg
[created_at] => 2018-02-21 11:18:13
[updated_at] => 2018-02-21 11:18:13
)
[4] => stdClass Object
(
[category] => panels
[id] => 3
[code] => QWE
[path] => public/uploads/0TSrz6j3JJH17XgEs2161mOh8aYgDikujdYwrCWR.jpeg
[created_at] => 2018-02-21 11:18:13
[updated_at] => 2018-02-21 11:18:13
)
)
我的问题是:有没有办法获得这样的结果(= 将 category 属性转换为一个数组,该数组将所有相关类别分组,如果存在多个类别)
Array
(
[0] => stdClass Object
(
[category] => Array
(
[0] => lamps
[1] => panels
)
[id] => 1
[code] => canopy
[path] => public/uploads/AAmAnnC2Yoij9QblcybTJefE5vTQrNZsfDCWqOPt.jpeg
[created_at] => 2018-02-21 11:15:06
[updated_at] => 2018-02-21 11:15:06
)
[1] => stdClass Object
(
[category] => Array
(
[0] => lamps
)
[id] => 2
[code] => canopy2
[path] => public/uploads/nqDT4gEXbF0opPmEpa1cPo5iPSulRoesYcgHiOA3.jpeg
[created_at] => 2018-02-21 11:17:44
[updated_at] => 2018-02-21 11:17:44
)
[2] => stdClass Object
(
[category] => Array
(
[0] => lamps
[1] => panels
)
[id] => 3
[code] => QWE
[path] => public/uploads/0TSrz6j3JJH17XgEs2161mOh8aYgDikujdYwrCWR.jpeg
[created_at] => 2018-02-21 11:18:13
[updated_at] => 2018-02-21 11:18:13
)
)
直接使用 MySQL 还是唯一的方法是操纵结果(在我的例子中是 PHP)?
可能答案是“您必须使用 PHP”,但我不是 MySQL 专家,这就是问题的原因。
【问题讨论】:
-
你可以用
GROUP BY p.id来做GROUP_CONCAT()。 -
@PatrickQ 太棒了,
GROUP_CONCAT(p.category)和GROUP BY r.id正是我想要的。它不会创建数组,但我想这绝对是我在 PHP 中的职责。谢谢帕特里克! -
是的,如果你想要一个实际的 PHP 数组,你需要在结果上运行 explode()。