2017-10-19 13 views
0

我正行的列隨機種子數據庫,用雄辯:Laravel您請求1項,但只有0項可用

$physician = SelectOption::where('select_option_group_id', 1)->pluck('name')->random(); 

如果表在select_options存在數據它的工作原理。但是,如果它不存在,它會給出錯誤:

您請求了1項,但只有0項可用。

我想讓它爲空,如果它是空的。

+0

那是因爲你從字面上試圖隨機不存在的結果。所有你需要做的就是用if語句進行驗證,要麼計數($醫師)> 0或空($醫生)或任何你想要的方法。 – abr

回答

2

檢查集合不爲空之前做random()

$collection = SelectOption::where('select_option_group_id', 1)->pluck('name'); 
if (!$collection->isEmpty()) { 
    $physician = $collection->random(); 
} else { 
    ... 
} 
+0

隨機方法中的1是什麼? – Nevermore

+0

要退回的物品數量。但是使用1實際上是毫無意義的,所以我現在刪除了它。有關詳細信息,請參閱隨機()源[此處](https://github.com/illuminate/support/blob/master/Collection.php#L1174)。 –

+0

謝謝@Marcin,明白了 – Nevermore

1

使用inRandomOrder()代替:

$physician = SelectOption::where('select_option_group_id', 1)->inRandomOrder()->first(); 
$name = is_null($physician) ? 'No data available' : $physician->name;