Выборка из mysql в виде двумерного массива

188
13 ноября 2018, 12:00

Вот есть такой запрос:

Select `u`.`name`, `i`.`url`, `i`.`title`, `i`.`likes`
From `users` as `u`
Left join `images` as `i`
On `u`.`image_id` = `i`.`id`
Where `users`.`id` = 5

Мне нужен массив, чтобы работать с ним в php примерно в таком виде:

$data['name']
$date['image']['url']
$data['image']['title']
$data['image']['likes']

Можно ли сделать это средствами mysql?

Answer 1

Средствами mysql этого не сделать. Все превращение структуры данных нужно делать на сторона PHP. И на сколько я понял, структура данных должна быть такая

    [
        'name1' => 
            [
                'url1' => ['title' => '...', 'likes' => 5],
                'url2' => ['title' => '...', 'likes' => 10]
            ],
        'name2' =>
            [
                'url3' => ['title' => '...', 'likes' => 3],
                'url4' => ['title' => '...', 'likes' => 7]
            ],
    ]

Вот такой код превратит результат запроса в нужную вам струкутуру

    foreach ($rows as $row) {
        $data[$row['name']][$row['url']] = ['title' => $row['title'], 'likes' => $row['likes']];
    }
READ ALSO
Node.js MySQL unknown column in field list

Node.js MySQL unknown column in field list

Консоль выдает ошибку unknown column 'Tomas' in 'field list'

178
Как объединить строки в SQL

Как объединить строки в SQL

Как задавая запрос в базу данный, соединить две строчки в одну, те

161
Запрос на удаления

Запрос на удаления

Есть список категорий и у каждой категории есть потомки(они хранится в одной таблице Group(id, name, parent_id) и у каждого потомка есть в другой таблице...

149
Масштаб на мобилке

Масштаб на мобилке

На сайте у body и некоторых элементов (например фиксированное меню сверху) в CSS установлено свойство min-height: 750px;При просмотре с мобильного изначально...

195