希望能有一些帮助。假设我有一个像这样的mysql表
ID | Content | Parent ID |
2 | A | 0
3 | A | 2
4 | A | 3
5 | A | 4
6 | A | 10
7 | A | 0
8 | A | 7
9 | A | 8
10 | A | 9
我想要ID 2的所有后代。
3是孩子。孙子将是父母ID为3的任何帖子。依此类推。
在这种情况下,ID 2
的后代为ID's 3, 4 and 5
。
ID 7
的后代是ID's 8, 9, 10 and 6
无论如何,我可以在MySQL中查询这一点,对祖先的深度没有限制吗?或者甚至在php中迭代结果集?
非常感谢。
答案 0 :(得分:1)
getTree()
将返回带有嵌套子级的父级节点。您可能需要根据您的框架更改PHP mysql查询。
public function getTree($nodeId) {
$mainNode = $this->db->select('id, content')->from('table_name')->where('id', $nodeId)->get()->first_row();
$this->recur($mainNode);
return $mainNode;
}
public function recur(&$node) {
$q = $this->db->select('id, content')->from('table_name')->where('parent_id', $node->id)->get();
if($q->num_rows() == 0) {
return;
}
if($q->num_rows() > 0) {
$node->children = $q->result(); // array of all child nodes
foreach ($node->children as $u) {
$this->recur($u);
}
}
}
答案 1 :(得分:0)
您可以这样完成:(我将使用伪代码给您一个大概的想法)
form do |f|
f.inputs "Détails Utilisateurs" do
f.input :user
end
f.inputs "Accès" do
offer.documents.each do |document|
f.input document,
label: document,
as: :boolean do
f.check_box document, {}, "true", "false"
end
end
end
f.buttons
end
答案 2 :(得分:-3)
您必须规范化您的数据库 https://en.wikipedia.org/wiki/Database_normalization
我理解你的问题:
论坛(家长)
----第一届论坛----
forum_id = 1
forum_name = php
主题(儿童)
---- First Record ----
thread_id = 20
forum_id = 1
----下一条记录----
thread_id = 21
forum_id = 1
发布(孙子)
然后您使用联接来上下访问 例如,使用规范化数据库 如果你在线程表中,你可以访问它所属的论坛 以及特定主题中的帖子都在一个查询中