0

我想查询“类别”字段中至少有一个带有特定“id”的链接的“商店”类型的所有条目,我该如何实现?

我试过了:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR', $id );
$page = $client->getEntries($query);

“商店”内的链接结构是这样的:

["categories"]=>
object(stdClass)#49 (1) {
  ["pt-BR"]=>
  array(1) {
    [0]=>
    object(stdClass)#52 (1) {
      ["sys"]=>
      object(stdClass)#55 (3) {
        ["type"]=>
        string(4) "Link"
        ["linkType"]=>
        string(5) "Entry"
        ["id"]=>
        string(22) "5LuXxFE2eQoqOY0yQO2iQ4"
      }
    }
  }
}

类别”本身看起来像:

["category"]=>
  object(stdClass)#49 (1) {
    ["pt-BR"]=>
    array(1) {
      [0]=>
      object(stdClass)#46 (1) {
        ["sys"]=>
        object(stdClass)#47 (3) {
          ["type"]=>
          string(4) "Link"
          ["linkType"]=>
          string(5) "Entry"
          ["id"]=>
          string(22) "5LuXxFE2eQoqOY0yQO2iQ4"
        }
      }
    }
  }

但是没有用。

4

1 回答 1

1

你应该能够做这样的事情:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.sys.id', $id );
$page = $client->getEntries($query);

或者可能:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', $id );
$page = $client->getEntries($query);

如果你想要它专门用于pt-BR语言环境。

如果您需要为返回条目的数量添加限制,您可以附加:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', $id)->setLimit(5);
$page = $client->getEntries($query);

考虑一下,如果您希望以可预测的顺序返回项目,您还需要在查询中添加 order by。

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', $id)->setLimit(5)->orderBy('sys.createdAt');
$page = $client->getEntries($query);

如果您的category字段是值列表,您可以改为使用如下in选择器:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', [$id], 'in')->setLimit(5)->orderBy('sys.createdAt');
$page = $client->getEntries($query);

有关更多信息,请参阅:https ://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/search-parameters/search-on-references

您还可以通过以下方式轻松检查浏览器中查询的实际 JSON 响应:

http://cdn.contentful.com/spaces/YOURSPACEID/entries/?access_token=YOURACCESSTOKEN&content_type=YOURCONTENTTYPEID&fields.category.sys.id=5LuXxFE2eQoqOY0yQO2iQ4

于 2017-05-16T17:19:35.420 回答