将MySQL数据转换为PHP对象/关联数组的简单方法?

时间:2017-05-13 07:01:55

标签: php mysql database object associative-array

有没有一种简单的方法来查询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的专家,但我真的怀疑他们是否可以轻松处理这些问题。

0 个答案:

没有答案