提示 api Lucid ORM 的返回

Posted

技术标签:

【中文标题】提示 api Lucid ORM 的返回【英文标题】:Tip the return of the api Lucid ORM 【发布时间】:2018-08-20 20:27:18 【问题描述】:

我的查询从站点返回了正确的数据,我想更改返回格式但我没有得到它。

我的查询

const message = Message.query().where('group_id', group_id).limit(limit).orderBy('id', 'desc')
  .with('user').fetch()

这是当前结果

[
  "id": 39,
  "user_id": 11,
  "group_id": 43,
  "message": "asdfasdfsadf",
  "created_at": "2018-08-20 15:51:39",
  "updated_at": "2018-08-20 15:51:39",
  "user": 
    "id": 11,
    "username": "a",
    "email": "a",
    "password": "$2a$10$f3fMuqVxV4UZqAMX4xIXiukLc1EelZjKhG8jm.CSmTAWyyZYLmR66",
    "created_at": "2018-08-18 08:46:46",
    "updated_at": "2018-08-18 08:46:46"
  
]

我想返回以下内容

[
  "_id": 39,
  "user_id": 11,
  "group_id": 43,
  "text": "asdfasdfsadf",
  "createdAt": "2018-08-20 15:51:39",
  "user": 
    "_id": 11,
    "name": "a",
  
]

如果我将.select ([]) 放在查询的开头,它不会加载用户。

看到我在字段中进行了以下更改

文本消息 _id 的 id 并删除一些

【问题讨论】:

这里有什么问题?只需创建一个包含您需要的元素的新对象并返回它 我不喜欢流行一个对象,因为它来自银行。作为 ORM,您应该可以选择重命名字段,对吧? 我试过这个:const message = Message.query (). Select (['id as _id',      'message as text',      'created_at as createdAt']). where ('group_id', group_id) .limit (limit) .orderBy ('id', 'desc')      .with ('user', (sel) =>        sel.select ('*') from ('users')      ) fetch ()没用 两种方式:1.在User模型中配置隐藏字段。 2.使用.with('user', query => query.select('id', 'name')) 【参考方案1】:

告诉您的模型应该返回哪些列适合您?

将此添加到您的用户模型中:

  public static get columns() 
    return ["_id", "name"];
  

【讨论】:

以上是关于提示 api Lucid ORM 的返回的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent ORM 无法正确返回模型的关系

Python Day74 ORM二

类型错误:返回值必须是实例,返回null

api-platform 可以将 200 返回到 POST 吗?

PHP领域类型Java中ibatis的API

使用 FuelPHP 从 ORM 返回 _data 数组