【问题标题】:Contentful: how to query entries that have one of either entries attached?内容丰富:如何查询附加了任一条目的条目?
【发布时间】:2019-07-09 19:40:08
【问题描述】:

我正在尝试根据 2 个或更多类别过滤博客文章。

博客文章是一种内容类型,类别也是如此。每篇博文只能有一个类别。该类别通过参考字段连接到帖子。我希望用户能够过滤帖子。用户可以一次选择多个类别。

我似乎无法伪造查询。这是我目前所拥有的:

// PHP
$categories = ["79RwpuYXo4W9FiYMdpeShj", "4CAkZRYSa3EB23ipTwZ92R"];
$query = (new Query)
    ->setContentType('blogPosts')
    ->where('fields.postCategory.sys.id', $categories, 'in'); // using 'all' instead of 'in' also doesn't return any results

在我看来,这应该会获取包含对任一类别条目 (id) 的引用的所有博客文章。但是,使用此查询不会返回任何条目。我正在使用contentful/laravel v4.0

【问题讨论】:

  • 最后一行的类别变量是否需要 $ 符号?还可以查看以下文档中的序列contentful.com/developers/docs/android/tutorials/…
  • 对不起,这只是问题中的一个错字。现在解决这个问题。
  • 它是否返回任何内容而不过滤类别?如果是这样,可以将 $categories 作为逗号分隔的字符串而不是数组传递..
  • 也尝试过,但没有任何运气。如果我只要求一个类别 ID,那么可行。但是,我无法想象 Contentful 不能传递这么简单的请求(多个类别)。是的,如果我完全省略 where(),我会得到所有博客文章。

标签: php api contentful


【解决方案1】:

好的,我想通了。我正在使用Contentful Core v2。 v2 的正确查询结构如下:

// PHP
$categories = ["79RwpuYXo4W9FiYMdpeShj", "4CAkZRYSa3EB23ipTwZ92R"];
$query = (new Query)
    ->setContentType('blogPosts')
    ->where('fields.postCategory.sys.id[in]', $categories);

【讨论】:

  • 很好,我想知道他们为什么要在这样的版本之间更改他们的 api 的“合同”。有点违背 api 设计的原则。如果你想升级,一切都坏了怎么办。 . 但是无头 CMS 的想法很有趣link.medium.com/OqXauUOIkU
  • 我想你需要注意主要版本更新中的重大变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2023-03-11
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
相关资源
最近更新 更多