Reputation: 2334
I'm new to Laravel. I've made a seeder file, and there is a for loop in it. I want to set the room_type based on the $i value, but it does not work.
This is the seeder file:
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class RoomTableSeeder extends Seeder
{
public function run(): void
{
for($i=0;$i<15;$i++) {
\App\Models\Room::create([
"room_type" =>
if($i == 4){"single_bed"}elseif($i == 9){"twin_bed"}else{"third_bed"}, //It doesn't work.
}
"status" => 0]);
}
}
}
This is the error I get:
ParseError
syntax error, unexpected token "if"
at database/seeders/RoomTableSeeder.php:19
15▕ for($i=0;$i<15;$i++) {
16▕
17▕ \App\Models\Room::create([
18▕ "room_type" =>
➜ 19▕ if($i == 4){"single_bed"}elseif($i == 9){"twin_bed"}else{"third_bed"},
20▕ }
21▕ "status" => 0]);
22▕ }
23▕ }
+1 vendor frames
2 [internal]:0
Composer\Autoload\ClassLoader::loadClass()
+7 vendor frames
10 database/seeders/DatabaseSeeder.php:15
Illuminate\Database\Seeder::call()
Upvotes: 0
Views: 83
Reputation: 50798
If you really want to go this way, you can use an immediately invokeable function as the expression value.
I've used match
here as opposed to several if
statements for readability.
"room_type" => (function ($i) {
return match ($i) {
4 => "single_bed",
9 => "twin_bed"
default => "third_bed"
}
})($i)
Upvotes: 1