4

我正在为一个学校项目开发一个小的 PHP 框架,我目前正在学习如何构建 ORM 部分。

但是,我不知道如何从带有连接的 SQL 查询中映射对象关系,或者我只是不知道要搜索的正确词:(

t1
  id
  title
  text

-

t2
  id
  name
  description

我试着做一个简单的:SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.t1_id

我得到的是一个简单的数组,其中表和 id 列中的所有字段都被覆盖,因为它存在于两者中。

[
  "id" => "2"
  "title" => "Lorem"
  "text" => "Ipsum"
  "name" => "Tomato"
  "description" => "Tomato are nice"
]

所以我的问题是有一种简单的方法可以通过 joins 获得类似的东西吗?

[
  "t1" => [
     "id" => 2
     "title" => "Lorem"
     "text" => "Tomato"
     "t2" => [
       "id" => 3
       "name" => "Tomato"
       "description" => "Tomato are nice"
     ]
]
4

1 回答 1

1

不,连接是用于创建两个表并排的表视图。但你可以这样做:

SELECT t1.id, t1.title, t1.next, t2.name as "t2_name", t2.description as "t2_description" FROM t1 LEFT JOIN t2 ON t1.id = t2.t1_id

这将为您提供以下前缀:

[
    "t1" => [
        "id" => 2
        "title" => "Lorem"
        "text" => "Tomato"
        "id" => 3
        "t2_name" => "Tomato"
        "t2_description" => "Tomato are nice"
    ]
]

这解决了您试图解决的相同问题。

于 2012-07-02T20:54:30.067 回答