使用 Laravel 我有兩個模型,Prize并且Tickets,每個獎品只能有一張與之關聯的票。
在迭代 時Prizes,我想為每個人分配一個唯一的票證。我通過從集合中隨機選擇一個,然后在分配后將其從集合中洗掉來做到這一點。
我在每一個的發現each呼叫但是部分獎品具有相同的票ID,我懷疑已經分配門票不從洗掉$tickets的內each回圈。
有人可以解釋為什么會這樣以及我如何正確編碼嗎?
$prizes = Prize::all()->limit(5)->get();
$tickets = Tickets::all()->limit(5)->get();
// iterate over runner up prizes
$prizes->each(function ($prize, $key) use($tickets) {
// select ticket from bag
$winner = $tickets->random();
// assign to prize
$prize->ticket_winner_id = $winner->id;
// remove id from remainder
$tickets = $tickets->except($winner->id);
});
uj5u.com熱心網友回復:
你為什么不嘗試在 $tickets 之前添加一個&符號使用:
$prizes = Prize::all()->limit(5)->get();
$tickets = Tickets::all()->limit(5)->get();
// iterate over runner up prizes
$prizes->each(function ($prize, $key) use(&$tickets) {
// select ticket from bag
$winner = $tickets->random();
// assign to prize
$prize->ticket_winner_id = $winner->id;
// remove id from remainder
$tickets = $tickets->except($winner->id);
});
這會對 php 說你不想要那個變數的副本,你想要改變它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/336379.html
