PHP PDO左连接多维数组
基本上,我有三张桌子。我有一个项目表、一个问题表和一个答案表。一个项目可以有很多问题,一个问题可以有很多答案。使用问题ID上的PDO和LEFT JOIN,如何将带有答案的注释转换为多维数组,以便结构如下所示:PHP PDO左连接多维数组,php,mysql,pdo,Php,Mysql,Pdo,基本上,我有三张桌子。我有一个项目表、一个问题表和一个答案表。一个项目可以有很多问题,一个问题可以有很多答案。使用问题ID上的PDO和LEFT JOIN,如何将带有答案的注释转换为多维数组,以便结构如下所示: [Question] => Array ( [id] => 1 [question] => 'Random Question' [askedBy] => 123 [answer] => A
[Question] => Array
(
[id] => 1
[question] => 'Random Question'
[askedBy] => 123
[answer] => Array
(
[0] => Array
(
[id] => 1
[answer] => 'An Answer'
[answeredBy] => 123
)
[1] => Array
(
[id] => 1
[answer] => 'Another Answer'
[answeredBy] => 123
)
)
)
最终确定的代码(返回我想要的)
在一个查询中,您可以请求所有答案,将问题关联到答案,并将项目关联到问题
$projects=array()
foreach($row作为$row的行)
if(!isset($projects[$row->project\u id]){$projects[$row->project\u id]=array('col1'=>$row->col1,'questions'=>array());}
if(!isset($projects[$row->project_id]['questions'][$row->question_id]){$projects[$row->project_id]['questions'][$row->question_id]=array('col2'=>$row->col2,'answers'=>array())}
$projects[$row->project\u id]['questions'][$row->question\u id]['answers'][$row->answer\u id]=array('col3'=>$row->col3)代码>
SELECT
a.id answer_id, a.answer, a.answeredBy,
q.id question_id, q.question, q.askedBy,
p.id project_id, p.title
FROM answer a
LEFT JOIN question q ON q.id = a.question_id
LEFT JOIN project p ON p.id = q.project_id
表结构
- 项目->id |标题|
- 问题->| id |问题|由|项目| id提出|
- 答案->id |答案|回答者|问题| id|
SELECT
a.id answer_id, a.answer, a.answeredBy,
q.id question_id, q.question, q.askedBy,
p.id project_id, p.title
FROM answer a
LEFT JOIN question q ON q.id = a.question_id
LEFT JOIN project p ON p.id = q.project_id