0

我正在尝试使用 ng-admin 构建管理界面。我正在使用一个reference字段将一个主要实体(例如帖子)链接到具有多对一关系的不同实体(评论)(一个帖子有很多评论)。

在一个listView()帖子上,我必须显示每个帖子的最后一条评论,但正如我从ng-admin 的关系文档中看到的那样,我不能,因为在我的 API 中,外键不在主要实体上,而是在次要实体上。

换句话说,我post_id在评论实体中,但我正在做一个listView()帖子,所以我无法访问任何评论。

这个问题有解决方法吗?我可以从不包含引用键本身的实体引用外部实体吗?

我将添加一个简单的 JSON 以使示例更清晰。

// Post
{ 
  id: 1,
  title: 'post n1',
  body: 'bla bla bla very cool'
}

// Comment
{ 
  id: 1,
  body: 'yo bro'
  post_id: 1
}

谢谢

4

1 回答 1

1

从个人经验和查看参考资料来看,似乎只有使用 a 才能获得与您正在寻找的结果相似的结果referenced_list(请参阅http://ng-admin-book.marmelab.com/doc/reference/Field。 html#-referenced-list-field-type)。第一句话完全符合您的情况:

“referenced_list 类型映射一对多关系,其中外键位于另一个实体中。”

使用它会是这样的:

nga.field('comments', 'referenced_list')
    .targetEntity(comments)
    .targetReferenceField('post_id')

这应该会为您提供与该帖子相关的评论列表。但是,由于这会返回一个列表,因此您不能将它与它一起使用listView(您不能将列表嵌套在列表中)。

不幸的是,我认为没有任何方法可以reference用来获得类似的结果,因为引用使用对象的键之一进行搜索。

于 2016-02-23T23:45:58.870 回答