如何从连接中获取嵌套哈希?

时间:2013-12-05 17:24:47

标签: ruby sqlite sequel

我正在使用Sequel从SQLite数据库中读取行。不需要写作。

我正在使用基本联接。考虑一下:

db = Sequel.sqlite
db[:user].join_table(:left, :photos, user_id: :user_id)

这会将用户表上的照片表加入(保持没有照片的用户)。

然而,这会将用户的所有行数乘以其照片数量:

[
  {user_id: 1, name: 'User1', photo_id: 1, photo_name: 'profile.jpg'}
  {user_id: 1, name: 'User1', photo_id: 2, photo_name: 'cat.jpg'}
  {user_id: 1, name: 'User1', photo_id: 3, photo_name: 'dog.jpg'}
  {user_id: 2, name: 'User2', photo_id: 4, photo_name: 'profile.jpg'}
  {user_id: 2, name: 'User2', photo_id: 5, photo_name: 'profile.jpg'}
  {user_id: 3, name: 'User3', photo_id: nil, photo_name: nil}
]

我想将所有照片属性嵌套在一个键下,如下所示:

[
  {user_id: 1, name: 'User1', photos: [{photo_id: 1, photo_name: 'profile.jpg'}, {photo_id: 2, photo_name: 'cat.jpg'}, {photo_id: 3, photo_name: 'dog.jpg'}]}
  {user_id: 2, name: 'User2', photos: [{photo_id: 4, photo_name: 'profile.jpg'}, {photo_id: 5, photo_name: 'profile.jpg'}]},
  {user_id: 3, name: 'User3', photos: [] }
]

我如何实现这种“迷你关系”?我是否必须指定模型?

0 个答案:

没有答案