为什么我的 forget() 方法不从集合中删除对象?

Why does my forget() method not remove object from collection?

我有一组“票”,使用 random 收集实用程序方法我 select 从列表中选择了一张。 “门票”集合现在应该删除(或忘记)随机 selected 的门票,以便我可以进一步处理该集合。使用 forget 方法似乎无法执行 documentation 或(更有可能是我遗漏了一些东西)中描述的内容。

有人能发现我的代码有什么问题吗?

$tickets = Tickets::all();
$total_winners = 5;
$selected_tickets = $tickets->random($total_winners);
$jackpot_winner = $selected_tickets->random();
$selected_tickets->forget($jackpot_winner->id); // this line should remove the $jackpot_winner

当我在第 3 行和第 5 行打印 $selected_tickets 的内容时,它们具有完全相同的项目,包括 $jackpot_winner.

Forget 函数使用集合键而不是模型中的 ID。要实现您想要的效果,您可以使用此方法:

$selected_tickets = $selected_tickets->except($jackpot_winner->id);

https://laravel.com/docs/8.x/collections#method-except