我通過一個雄辯的集合回圈,我想將資料添加到另一個名為“$tagCollection”的集合中。如果已經存在具有相同 tag_id 的條目,我只想增加現有條目的評級列。目前它看起來像這樣。有人有想法嗎?
$tagCollection = collect();
$entries->each(function($entry) use($tagCollection){
$tagId = $entry->tag_id;
//something like this
if($tagCollection->contains('tag_id', $tagId)){
$tagCollection->update ('rating' => $oldRating 0.5)
} else{
$tagCollection->push(array(
'tag_id' => $tagId,
'rating' => 0.35
));
}
});
我還嘗試使用 ->pull() 將專案從集合中洗掉,然后使用新評級再次推送它,但我也不知道如何
uj5u.com熱心網友回復:
你能用陣列而不是集合來做嗎?例如:
$tagArray = [];
$entries->each(function ($entry) use (&$tagArray) {
if (isset($tagArray[$entry['tag_id']])) {
$tagArray[$entry['tag_id']] = 0.5;
} else {
$tagArray[$entry['tag_id']] = 0.35;
}
});
uj5u.com熱心網友回復:
如果最終目標是更新$entries屬于特定的所有條目$tagId,那么您可以這樣做
$entryIds = $entries->where('tag_id',$tagId)->pluck('id')->toArray();
Entry::whereIn('id', $entryIds)->update(['rating' => \DB::raw('rating 0.5')]);
就是這樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/531401.html
標籤:拉拉维尔雄辩laravel 集合
