'Laravel You requested 1 items, but there are only 0 items available
I am getting row's column randomly to seed database, using eloquent :
$physician = SelectOption::where('select_option_group_id', 1)->pluck('name')->random();
it works if data exists in select_options table. But if it does not exists, it gives an error :
You requested 1 items, but there are only 0 items available.
I want to leave it empty, if it's empty.
Solution 1:[1]
Check if collection is not empty prior doing random()
:
$collection = SelectOption::where('select_option_group_id', 1)->pluck('name');
if (!$collection->isEmpty()) {
$physician = $collection->random();
} else {
...
}
Solution 2:[2]
Use inRandomOrder()
instead:
$physician = SelectOption::where('select_option_group_id', 1)->inRandomOrder()->first();
$name = is_null($physician) ? 'No data available' : $physician->name;
Solution 3:[3]
Check the order of your seeder or the date of your migration file. The migrations file is executing by date ex: 20220429_16_43_02_create_order_table.php. So, if you have 20220416_.... after 20220429_.... that throw the exception.
Solution: Change (rename) the date of the file.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | |
Solution 3 |