我正在寻找使用邻接列表/单表继承模型 ( id, parent_id
) 从数据库中递归获取所有父元素的最简单方法。
我的选择目前看起来像这样:
$sql = "SELECT
e.id,
TIME_FORMAT(e.start_time, '%H:%i') AS start_time,
$title AS title,
$description AS description,
$type AS type,
$place_name AS place_name,
p.parent_id AS place_parent_id,
p.city AS place_city,
p.country AS place_country
FROM event AS e
LEFT JOIN place AS p ON p.id = e.place_id
LEFT JOIN event_type AS et ON et.id = e.event_type_id
WHERE e.day_id = '$day_id'
AND e.private_flag = 0
ORDER BY start_time";
每个event
都链接到 a place
,并且每个place
都可以是另一个的孩子place
(最多大约 5 级深)
这可以在使用 mysql 的单次选择中实现吗?
目前我在想它可能是一个单独的函数,它循环遍历返回的$events
数组,随时添加place_parent_X
元素,但我不确定如何实现这一点。