Sqlx в golang — можно ли сопоставлять соединенные таблицы?

Как я могу использовать сканирование структуры sqlx в ситуациях, когда я присоединяюсь к таблицам?

Например, предположим, что у Person много сообщений, и я хочу получить структуру, в которую встроены сообщения людей в виде среза.

Я представляю себе DTO следующим образом:

type Person struct {
    Id        string    `json:"id"`
    Name      string    `json:"name"`       
    Posts     []*Post   `json:"posts"`  
}

type Post struct {
    Id        string `json:"post_id"`
}

SQL, который я предполагаю использовать, будет

SELECT 
    psn.id,
    psn.name,
    pst.id AS post_id
FROM
    person psn
JOIN posts pst ON pst.person_id = psn.id

Это выполнимо в sqlx? Как?

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Is this accomplishable in sqlx? How?

Это не особенность sqlx, это не ORM. Это просто удобная оболочка, которая, среди прочего, упрощает выделение строк в плоские структуры.

Вам нужно либо самостоятельно обработать несколько строк для каждого пользователя, либо выполнить два запроса, сначала для человека, а затем для его сообщений.

Другие вопросы по теме