Содержательный: возврат записей в случайном порядке

Можно ли вернуть записи в случайном порядке с помощью содержательного запроса?
Без указания "->where" параметр, это будет сортировать записи по алфавиту.

Я пытался использовать shuffle() а также array_rand()Однако он не распознает Contentful объект как массив.

Вот что у меня сейчас есть:

<?php
$query = new \Contentful\Delivery\Query;
$query->setContentType(PRODUCT_TYPE);

$entries = $client->getEntries($q1->where('fields.images[exists]', 'true')->where('fields.category.sys.id', $entry->getCategory()->getId())->where('limit', '3'));

$array_shuffle = shuffle($entries)

foreach ($array_shuffle as $entry)
{}

?>

3

Решение

Автор Contentful PHP SDK здесь.

К сожалению, класс, который содержит результат запроса, в настоящее время не разрешает доступ к внутреннему массиву. Я только что открыл тянуть запрос чтобы изменить это. Он будет частью версии 1.2, которая будет выпущена позже на этой неделе.

В то же время лучше всего использовать iterator_to_array(),

<?php
$query = new \Contentful\Delivery\Query;
$query->setContentType(PRODUCT_TYPE);

$entries = $client->getEntries($q1->where('fields.images[exists]', 'true')->where('fields.category.sys.id', $entry->getCategory()->getId())->where('limit', '3'));

$arrEntries = iterator_to_array($entries);

shuffle($arrEntries)

foreach ($arrEntries as $entry)
{}

Обратите внимание, я также исправил, как shuffle() используется. Он не возвращает перемешанный массив, он меняет его на месте.

1

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

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