Запросить все записи типа & quot; store & quot; которые имеют в поле «категория» ссылка на определенный & quot; идентификатор & quot; в содержательном

Я хочу запросить все записи типа «хранить» что есть в поле «Категория» хотя бы одну ссылку с конкретным «Я бы», как я могу этого достичь?

Я попробовал это:

$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"}
}
}
}

Но не сработало.

0

Решение

Вы должны быть в состоянии сделать что-то вроде этого:

$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);

Учтите, что если вы хотите, чтобы элементы были возвращены в предсказуемом порядке, вам также необходимо добавить заказ в запросе.

$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

1

Другие решения

Других решений пока нет …