Seederでダミーデータを作成する際、グローバルヘルパや関数を使用する際の落とし穴があります。
php artisan make:seed UsersTableSeeder
で作成すると以下のSeederが生成されます。
UsersTableSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}
ダミーデータをrun
メソッド内に記述しSeederを実行するとヘルパや関数を使用している場合は怒られます。
UsersTableSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->insert([
'name' => 'hoge',
'password' => Hash::make('hoge'),
'remember_token' => Str::random(30),
]);
}
}
#対処法
ファザードやヘルパを使用する際は宣言してあげる必要があるらしいです。
UsersTableSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder; //最初からある
use Illuminate\Support\Facades\DB; //DBファザード使用の為追加
use Illuminate\Support\Facades\Hash; //Hashファザード使用の為追加
use Illuminate\Support\Str; //strメソッド使用の為追加
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->insert([
'name' => 'hoge',
'password' => Hash::make('hoge'),
'remember_token' => Str::random(30),
]);
}
}