我有一个"票券"集合,使用random
集合实用程序方法,我从列表中选择一个。"有关;集合现在应该删除(或忘记)随机选择的票据,以便我可以进一步处理该集合。使用forget
方法似乎没有做文档或(更可能是我错过了什么)中描述的事情。
有人能指出我的代码有什么问题吗?
$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法