簡體   English   中英

Pluck在laravel中無法按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM