Можно ли вернуть записи в случайном порядке с помощью содержательного запроса?
Без указания "->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)
{}
?>
Автор 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()
используется. Он не возвращает перемешанный массив, он меняет его на месте.
Других решений пока нет …