【发布时间】:2015-06-23 09:13:43
【问题描述】:
在我的数据库中,我基本上有一个名为 person 的表(Doctrine 的实体),它看起来像这样:
class Person
{
private $id;
/**
* @ORM\ManyToOne(targetEntity="Person")
*/
private $parent;
}
我想构建一个方法getAllChildren,它返回person1 下的所有人员,并递归返回所有有孩子的人员。
我想知道我是否可以通过一个递归的SQL 请求来做到这一点。
更新1
postgres 版本:9.1
-- Table: person
-- DROP TABLE person;
CREATE TABLE person
(
id serial NOT NULL,
parent_id integer,
nom character varying(255) DEFAULT NULL::character varying,
prenom character varying(255) DEFAULT NULL::character varying,
age integer,
description text,
statut character varying(255) DEFAULT NULL::character varying,
CONSTRAINT person_pkey PRIMARY KEY (id),
CONSTRAINT fk_7cbkzkd63HRzVK8e FOREIGN KEY (parent_id)
REFERENCES person(id) MATCH SIMPLE
)
更新2
我找到了http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/,这正是我所需要的除了我的模型是无限的
【问题讨论】:
-
是的,你可以。但如果你想要一个 SQL 答案,请提供 SQL 详细信息:至少是表定义,最好是一些示例数据和 PG 版本。
-
@Patrick 请查看我更新的帖子
-
您的 DDL 不完整:
CONSTRAINT fk_7cbkzkd63HRzVK8e FOREIGN KEY (parent_id) REFERENCES person(id)
标签: php sql postgresql doctrine-orm