Я хочу запросить все записи типа «хранить» что есть в поле «Категория» хотя бы одну ссылку с конкретным «Я бы», как я могу этого достичь?
Я попробовал это:
$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"}
}
}
}
Но не сработало.
Вы должны быть в состоянии сделать что-то вроде этого:
$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 на запрос в вашем браузере, перейдя в:
Других решений пока нет …