I'm trying to return an nested array from a MYSQL query. I have a table of posts, users, keywords, and categories and I'd like to optimize the queries so I don't have so many selects. I currently have 4 SELECT queries for one post, each looping through a foreach, and creating a nested array in PHP. Is there a way to consolidate those into less queries, and faster execution?
Here's what one row would look like. The keywords, category, and author numbers are all ids in their respective tables.
Posts table:
| id | title | content | keywords | category | author |
|----|-------|----------------|----------|----------|--------|
| 1 | Test | Lorem ipsum... | 1, 2 | 1 | 1 |
|----|-------|----------------|----------|----------|--------|
Keywords table:
| id | name | url | description |
|----|----------|----------|----------------|
| 1 | keyword1 | keyword1 | Lorem ipsum... |
| 2 | keyword2 | keyword2 | Lorem ipsum... |
|----|----------|----------|----------------|
User table:
| id | name | email |
|----|----------|--------------|
| 1 | John Doe | [email protected] |
|----|----------|--------------|
Category table:
| id | name | url |
|----|-----------|-----------|
| 1 | Category1 | category1 |
|----|-----------|-----------|
Here's the output I'd like to achieve:
Array
(
[0] => Array
(
[id] = 1
[title] = Test
[content] = Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias, sapiente assumenda ratione dicta cumque accusantium id labore cupiditate maiores obcaecati repudiandae at eum fuga doloremque commodi. Quidem, nulla cupiditate aperiam!
[keywords] => Array
(
[0] => Array
(
[id] => 1
[name] => keyword1
[url] => keyword1
[description] => Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores, dolorem, consectetur voluptatem amet hic placeat alias rerum unde quis quia aperiam officia aliquam incidunt sit fugit quo iusto porro repellat!
)
[1] => Array
(
[id] => 2
[name] => keyword2
[url] => keyword2
[description] => Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam, culpa, repudiandae voluptatibus odit nam id sed maxime ullam quia accusamus minima nisi! Dolor, doloremque similique voluptatibus at eos vitae id?
)
)
[category] => Array
(
[id] => 1
[name] => Category1
[url] => category1
)
[author] => Array
(
[id] => 1
[name] => John Doe
[email] => [email protected]
)
)
)