有没有一种简单的方法来查询MySQL数据并将数据转换为PHP数据对象或PHP关联数组?是否已有现有的框架/库?
在每个人都跳到答案之前,我必须澄清 - 不,我不是在谈论MySQLi的fetch_object或fetch_assoc,或类似的东西。
我说的是查询多个表,并以分层方式将数据存储在对象/关联数组中。
例如,如果我有如下表所示的MySQL表:
Table `Person`
id | name
1 | John
2 | Mary
3 | Sue
4 | Peter
5 | David
Table `IsMarriedTo`
personId1 | personId2
1 | 2
2 | 1
3 | 5
5 | 3
Table `HasChild`
personId1 | personId2
1 | 3
2 | 3
2 | 4
好吧,假设我想询问John
及其所有相关家庭成员。最后,我希望有一个这样的PHP assoc数组:
$person = array(
'id' => 1,
'name' => 'John',
'IsMarriedTo' => array(
array(
'id' => 2,
'name' => 'Mary',
'HasChild' => array(
array(
'id' => 3,
'name' => 'Sue',
'IsMarriedTo' => array(
array(
array(
'id' => 5,
'name' => 'David',
'IsMarriedTo' => array(),
'HasChild' => array()
)
)
),
'HasChild' => array()
),
array(
'id' => 4,
'name' => 'Peter',
'IsMarriedTo' => array(),
'HasChild' => array()
)
)
)
),
'HasChild' => array(
array(
'id' => 3,
'name' => 'Sue',
'IsMarriedTo' => array(
array(
array(
'id' => 5,
'name' => 'David',
'IsMarriedTo' => array(),
'HasChild' => array()
)
)
),
'HasChild' => array()
)
)
);
如果你让我为这个例子编写SQL查询,嗯...是的,我知道怎么写它们。但我只是想知道是否有一种更简单/非手动的方式来查询数据并将数据转换为PHP数据对象或PHP关联数组。如果现有的框架/库已经存在,那就更好了。
在实际应用程序中,表关系并不像上面的示例那么简单。好吧,数据库模式也可能不一定非常复杂,但是一些简单的查询将涉及太多的表,并且从数据库数据手动重建PHP中的数据对象或数组是非常重复且容易出错的。
即使上面的例子可能没有简单的非手动替代方法,但有时我想知道:有人觉得并同意获取数据库数据和重建PHP对象/数组只是一个重复家务?每天写几十个新查询,如果不是几百个。它们可能彼此不同,但它们的模式或多或少相同。由于PHP和MySQL是如此长的成熟技术,肯定必须有某种框架/库来完成这些重复的事情。你不这么认为吗?
修改
有些人将此标记为重复。我不确定这个问题是否真的重复。可能是它,但仍然......如果你认为它是,你至少可以善良并提供一些链接到其他类似的问题与答案?
请注意我不仅仅是在谈论ORM很容易解决的问题。我在谈论从多个数据库表构建的PHP上的分层数据结构....如果不仔细处理,可能会涉及访问循环。 ORM可以轻松解决这个问题吗?如果是这样,请向我展示一些亮点,并向我展示已经回答的其他类似问题的链接。
我不是ORM的专家,但我真的怀疑他们是否可以轻松处理这些问题。