我目前正在使用两个看起来像这样的表:
tasks(user1, user2)
users(id, name)
我正在执行以下查询:
SELECT * FROM tasks
LEFT JOIN users u1 ON tasks.user1 = u1.id
LEFT JOIN users u2 ON tasks.user2 = u2.id
我正在使用PHP PDO来执行查询并返回一个数组,然后我将其编码为json,如下所示:
$query = $con->prepare($SQL);
$query -> execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
header('Content-Type: application/json');
echo json_encode($result);
我的问题是user2值覆盖$ result数组中的user1值,有没有办法可以返回类似的内容:
[{"user1": {"id": "value", "name":"value"}, "user2": {"id": "value", "name":"value"}}]
这样每个用户都是用户键值内的一组新数据。
有关如何做到这一点的任何想法?我是PDO的新手。
答案 0 :(得分:1)
您需要在查询中为它们提供不同的别名(列名称):
SELECT t.*, u1.name as name1, u2.name as name2
FROM tasks LEFT JOIN
users u1 ON tasks.user1 = u1.id LEFT JOIN
users u2 ON tasks.user2 = u2.id ;