提示 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 无法正确返回模型的关系