是否可以通过Contentful Query以随机顺序返回条目?
如果不指定"->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)
{}
?>
&#13;
答案 0 :(得分:1)
Contentful PHP SDK的作者。
不幸的是,保存查询结果的类当前不允许访问内部数组。我刚开了一个pull request来改变它。它将成为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()
的使用方式。它不会返回混洗数组,它会将其更改。