在我的文字中我有一些{{}}
,我想用收集的随机帖子替换它们,就像这段代码一样:
$latestHerbsInformation = \App\ContentCategories::find('14')->contents()->inRandomOrder()->get();
$split = explode('{{}}', $data->description);
foreach ($split as $sp) {
$shuffled = $latestHerbsInformation->shuffle();
$rand = $shuffled->take(1);
echo $sp . $rand[0]->title;
}
我的代码$rand = $latestHerbsInformation->take(1);
中的在foreach
语句中始终返回相同的行,如何将其更改为随机
答案 0 :(得分:1)
您可以将first()
链接到shuffle以获取单个元素:
$rand = $latestHerbsInformation->shuffle()->first()
答案 1 :(得分:1)
当你shuffle()$ latestHerbsInformation它给出一个数组,因为它的内容是一个数组。所以你必须对它做第一个(),不给你一个集合。但要确保first()方法在take(1)方法之后。或者你可以通过limit(1)方法限制结果。所以你的代码应该是这样的:
$latestHerbsInformation = \App\ContentCategories::find('14')->contents()->inRandomOrder()->get();
$split = explode('{{}}', $data->description);
foreach ($split as $sp) {
$rand = $latestHerbsInformation->shuffle()->take(1)->first();
echo $sp . $rand->title;
}
这样你就不需要$ rand的密钥来访问它的属性了。
或者您可以使用limit()代替:
foreach ($split as $sp) {
$rand = $latestHerbsInformation->shuffle()->limit(1)->first();
echo $sp . $rand->title;
}