[英]Pluck not working as expected in laravel
在上一個問題之后 ,我需要從模型中獲取一個隨機ID列表的數組,我這樣做:
User::all('id')->random(2)->pluck('id')->toArray()
上面的工作按預期方式進行,將2個id放入數組中:
array:2 [
0 => 63
1 => 270
]
當我將其切換為僅一個隨機用戶時:
User::all('id')->random(1)->pluck('id')->toArray()
整個表被返回。
array:200 [
0 => 63
1 => 270
2 => 190
...
]
我的計划是使用以下內容吸引1至10個用戶:
User::all('id')->random(rand(1,10))->pluck('id')->toArray()
但是,當僅選擇一個隨機用戶時,如何使此工作正常進行,為什么要返回整個表?
random(1)
將不返回集合,而random(2)
及更高版本將返回。 您可以首先獲取查詢,然后根據結果是否為集合來不同地處理結果。
您可以使用數據庫來隨機分配用戶,並充分利用查詢構建器及其take
方法。
User::inRandomOrder()
->take(rand(1,10))
->pluck('id')
->toArray();
inRandomOrder
中添加了inRandomOrder,因此,如果您數量較少,則可以為MySQL做orderBy(DB::raw('RAND()'))
(請參閱此帖子以了解更多Laravel-雄辯或流暢的隨機行 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.