Laravel縺ァ繝繧ケ繝医ョ繝シ繧ソ菴懈舌繝輔ぃ繧ッ繝医Μ繝サ繧キ繝シ繝

繧ウ繝シ繝繧」繝ウ繧ー繧貞ョ御コ縺励>縺悶ユ繧ケ繝医r縺ッ縺倥a繧医≧縺ィ縺励※繧ゅ√ユ繧ケ繝医ョ繝シ繧ソ繧剃ス懈舌☆繧句ソ隕√′縺ゅj縺セ縺吶′

100莉カ縺ィ縺1,000莉カ蠢隕√↓縺ェ繧九→縲1蛟1蛟倶ス懊k縺ョ縺ッ縺九↑繧翫@繧薙←縺縺ァ縺吶h縺ュ縲

Laravel縺ァ縺ッ縲√弱ヵ繧。繧ッ繝医Μ縲上→縲弱す繝シ繝縲上→縺縺讖溯ス繧貞茜逕ィ縺励※邁。蜊倥↓螟ァ驥上ョ繝繝シ繧ソ縺御ス懈舌〒縺阪∪縺吶ョ縺ァ縲∽サ雁屓縺ッ縺薙ョ謇矩繧偵#邏ケ莉九@縺セ縺吶

Laravel8縺九i險倩ソー譁ケ豕輔′螟峨o繧翫√h繧贋セソ蛻ゥ縺ォ縺ェ縺」縺ヲ縺縺セ縺呻シ∽サ翫∪縺ァ菴ソ縺」縺ヲ縺縺ェ縺九▲縺滓婿縺ッ縲√●縺イ縺薙ョ譁譏弱ョ蛻ゥ蝎ィ繧剃コォ蜿励@縺ヲ縺縺阪∪縺励g縺縲

hasOne縺ョ蝣エ蜷医d繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺ョ縺ゅk繝「繝繝ォ縺ォ蟇セ縺吶k繝繧ケ繝医ョ繝シ繧ソ菴懈舌↓縺、縺縺ヲ縲√げ繧ー縺」縺ヲ繧ゅ≠縺セ繧願ィ倅コ九′隕句ス薙◆繧峨↑縺九▲縺溘ョ縺ァ縺薙■繧峨↓縺セ縺ィ繧√∪縺励◆縲

繝輔ぃ繧ッ繝医Μ縺ィ繧キ繝シ繝

繝輔ぃ繧ッ繝医Μ縺ィ縺ッ

繝「繝繝ォ繧堤函謌舌☆繧九◆繧√ョ縲主キ・蝣エ(Factory)縲上→閠縺医k縺ィ蛻縺九j繧縺吶>縺ィ諤昴>縺セ縺吶

蜷鬆逶ョ縺ォ繝繝シ繧ソ繧剃サ」蜈・縺励√Δ繝繝ォ繧定ェ蜍輔〒逕滓舌@縺ヲ縺縺阪∪縺吶ゆサ」蜈・縺吶k縺ッ蜈ィ縺ヲ荳蠕九〒縺ェ縺上∝ョ滄圀縺ョ蜷咲ァー繧偵Λ繝ウ繝繝縺ォ逕滓舌☆繧九%縺ィ繧ゅ〒縺阪∪縺吶

繧オ繝ウ繝励Ν繧ウ繝シ繝峨ッ縺薙■繧峨6ser繧ッ繝ゥ繧ケ縺ォ蟇セ縺吶k繝輔ぃ繧ッ繝医Μ繧貞ョ夂セゥ縺励※縺縺セ縺吶

 namespace Database\Factories;

 use App\Models\User;
 use Illuminate\Database\Eloquent\Factories\Factory;
 use Illuminate\Support\Str;

 class UserFactory extends Factory
 {
     /**
      * 繝輔ぃ繧ッ繝医Μ縺ョ蟇セ蠢懊☆繧九Δ繝繝ォ蜷
      *
      * @var string
      */
     protected $model = User::class;
 /**  * 繝「繝繝ォ縺ョ繝繝輔か繝ォ繝育憾諷九ョ螳夂セゥ  *  * @return array  */ 
 public function definition() {
     return [
         'name' => $this->faker->name(),
         'email' => $this->faker->unique()->safeEmail(),
         'email_verified_at' => now(),
         'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
         'remember_token' => Str::random(10),
     ]; }
 }

name繧email縺ョ驛ィ蛻縺ォ縺ッfaker繧貞茜逕ィ縺励※縺縺セ縺吶ゅ%繧後ッ縲∵欠螳壹&繧後◆繝代Λ繝。繝シ繧ソ縺ョ繝繧ケ繝医ョ繝シ繧ソ繧堤函謌舌@縺セ縺吶

萓九∴縺ーname縺ァ縺ゅl縺ー'蜑咲伐 闊'縲'貂。霎コ 逶エ莠コ'縺ェ縺ゥ縺ョ繝繝シ繧ソ縺御ス懈舌&繧後※縺縺阪∪縺吶

譌・譛ャ隱槭r蛻ゥ逕ィ縺吶k蝣エ蜷医↓縺ッ縲∬ィュ螳壹ヵ繧。繧、繝ォ縺ォ荳玖ィ倥ョ險隱槭ョ謖螳壹′蠢隕√〒縺吶

'faker_locale' => env('APP_FAKER_LOCALE', 'ja_JP'),

繧ゅ■繧阪s蝗コ螳壼、繧剃サ」蜈・縺吶l縺ー縲√☆縺ケ縺ヲ縺ョ繝「繝繝ォ縺ァ蜷後§蛟、繧貞叙繧九%縺ィ繧ょ庄閭ス縺ァ縺吶

繧キ繝シ繝縺ィ縺ッ

縲守ィョ繧偵∪縺(seeder)縲上%縺ィ縺ァ繝繧ケ繝医ョ繝シ繧ソ縺ョ蛻晄悄蛟、險ュ螳壹↓蛻ゥ逕ィ縺励∪縺吶

繧ッ繝ゥ繧ケ繧呈コ門y縺励※縺翫¢縺ー縲√さ繝槭Φ繝我ク縺、縺ァ繝ォ繝シ繝ォ縺ォ險倩シ峨@縺溷螳ケ縺ョ繝繧ケ繝医ョ繝シ繧ソ縺御ス懈舌&繧後∪縺吶

縺薙■繧峨bUser繝「繝繝ォ縺ォ蟇セ縺吶k繧キ繝シ繝縺ョ繧オ繝ウ繝励Ν繧偵#邏ケ莉九@縺ヲ縺縺阪∪縺吶

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;

class UserSeeder extends Seeder
{
public function run()
 {
     User::factory()
             ->count(50)
             ->create();
 }
}

繝繝輔か繝ォ繝医〒シ代▽縺ョ繝。繧ス繝繝峨〉un縺ョ縺ソ蟄伜惠縺励※縺縺セ縺吶ゅ%縺ョrun繝。繧ス繝繝峨↓險倩ソー縺励◆蜀螳ケ縺ァ繝繧ケ繝医ョ繝シ繧ソ縺御ス懈舌&繧後∪縺吶

蜃ヲ逅縺ョ蜀螳ケ縺ィ縺励※縺ッ

  • run繝。繧ス繝繝峨↓縺ヲ縲ゞser繝「繝繝ォ縺ォ蟇セ縺吶k繝輔ぃ繧ッ繝医Μ縺ョ蛻ゥ逕ィ繧貞ョ」險
  • count縺ォ縺ヲ螳溯。悟屓謨ー繧貞ョ夂セゥ
  • 譛蠕後↓create謖遉コ

縺薙l縺ァ繧キ繝シ繝縺九i蜈医⊇縺ゥ縺ョfactory繧貞他縺ウ蜃コ縺励※縲…ount縺ョ蠑墓焚シ医%縺薙〒縺ッ50蛟具シ峨ョ繝繝シ繧ソ繧剃ス懈舌@縺セ縺吶

隧ウ邏ー縺ェ隱ャ譏弱ッ譛ャ螳カ繧オ繧、繝医↓縺ゅj縺セ縺吶ョ縺ァ縲√%縺。繧峨b縺碑ヲァ縺上□縺輔>縲

繝輔ぃ繧ッ繝医Μ繧剃スソ逕ィ縺吶k繝「繝繝ォ縺ョ逕滓

繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺ョ縺ゅk繝輔ぃ繧ッ繝医Μ

萓九∴縺ー縲√%縺ョ繧医≧縺ェ繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺ョ縺ゅk繝繝シ繝悶Ν縺後≠縺」縺溘→縺励∪縺吶

シ大ッセ螟壹ョ繝ェ繝ャ繝シ繧キ繝ァ繝ウ

Book縺ォ髢「縺吶k繝繧ケ繝医r縺吶k蝣エ蜷医↓繧ゅゞesr繝「繝繝ォ縺ョ繝繝シ繧ソ縺悟ソ隕√↓縺ェ縺」縺ヲ縺阪∪縺吶ゅ∪縺溘。ook繧貞、ァ驥上↓菴懈舌☆繧句ソ隕√′縺ゅk縺ィ縺阪↑縺ゥ縺ォ繝輔ぃ繧ッ繝医Μ縺御スソ縺医k縺ィ蠑キ蜉帙↑豁ヲ蝎ィ縺ォ縺ェ繧翫∪縺吶

繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺ョ險ュ螳

縺セ縺壹ッ繝「繝繝ォ縺ョ繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺九i菴懈舌°繧峨

 namespace App\Models;

 class User extends Authenticatable
 {
  use HasFactory;

  public function books()
  {
      return $this->hasMany(Book::class);
  }
}

繝輔ぃ繧ッ繝医Μ繧貞茜逕ィ縺吶k縺ォ縺ッ縲√Δ繝繝ォ縺ォ縺ヲHasFactory繝医Ξ繧、繝医r螳」險縺励∪縺吶

Laravel縺ァ縺ッ縲後Δ繝繝ォ蜷阪→荳閾エ縺吶k繧ッ繝ゥ繧ケシ祈actory縲阪ョ蜻ス蜷崎ヲ丞援縺ォ蜑縺」縺溘け繝ゥ繧ケ繧奪atabase\Factories蜷榊燕遨コ髢灘縺九i讀懃エ「縺励∪縺吶

縺薙ョ隕丞援繧貞茜逕ィ縺励↑縺蝣エ蜷医ッ縲√Δ繝繝ォ縺ョnewFactory繝。繧ス繝繝峨r荳頑嶌縺阪@縺ヲ縲√Δ繝繝ォ縺ョ蟇セ蠢懊☆繧九ヵ繧。繧ッ繝医Μ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧堤峩謗・霑斐☆縺薙→縺後〒縺阪∪縺吶

use Database\Factories\Administration\FlightFactory;
 /**
 繝「繝繝ォ縺ョ譁ー縺励>繝輔ぃ繧ッ繝医Μ繧、繝ウ繧ケ繧ソ繝ウ繧ケ縺ョ菴懈
 *
 @return \Illuminate\Database\Eloquent\Factories\Factory
 */
 protected static function newFactory()
 {
 return FlightFactory::new();
 } 

繝輔ぃ繧ッ繝医Μ縺ョ菴懈

縺吶〒縺ォ菴懈先ク医∩縺ョUser繝輔ぃ繧ッ繝医Μ縺ォ邯壹>縺ヲ縲。ook繝輔ぃ繧ッ繝医Μ繧ゆス懈舌@縺セ縺吶

 namespace Database\Factories;

 use App\Models\Book;
 use Illuminate\Database\Eloquent\Factories\Factory;
 use Illuminate\Support\Str;

 class BookFactory extends Factory
 {
 protected $model = Book::class;
 /**
  * 繝「繝繝ォ縺ョ繝繝輔か繝ォ繝育憾諷九ョ螳夂セゥ
  *
  * @return array
  */ 
 public function definition() {
     return [
         'name' => $this->faker->name(),
         'author' => $this->faker->name(),
     ]; }
 }

Book繝輔ぃ繧ッ繝医Μ縺ァ縺ッ縲蛍ser_id縲阪ョ繝繝シ繧ソ繧剃ス懈舌@縺ヲ縺縺セ縺帙s縲ゅ%縺ョ逅逕ア縺ッ繧キ繝シ繝縺ァ縺碑ェャ譏弱@縺セ縺吶

class UserSeeder extends Seeder
 {

     public function run()
     {

     User::factory()
         ->count(50)
         ->has(
             Book::factory()
                 ->count(1)
                 ->state(function (array $attributes, User $user) {
                     return ['user_id' => $user->id];
                 })
         )
         ->create();
 }
 }

繧キ繝シ繝縺ォ縺ヲUser繝輔ぃ繧ッ繝医Μ繧貞茜逕ィ縺吶k髫帙↓縲”as繝。繧ス繝繝峨r菴ソ縺」縺ヲ繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺ョ縺ゅk繝「繝繝ォ繧ら函謌舌@縺セ縺吶

莉雁屓縺ッhasMany繝ェ繝ャ繝シ繧キ繝ァ繝ウ繧帝。梧攝縺ォ縺励※縺翫j縺セ縺吶′縲…ount縺ョ謨ー繧1縺ォ縺吶l縺ーhasOne繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺ョ蝣エ蜷医b蟇セ蠢懊〒縺阪∪縺吶

Book繝「繝繝ォ縺ョ逕滓舌↓蠢隕√↑user_id縺ッ縲√け繝ュ繝シ繧ク繝」窶輔r菴ソ縺」縺ヲ縲$user->id縲阪r貂。縺励※縺縺セ縺吶ゅ%繧後〒Uesr繝「繝繝ォ菴懈先凾縺ョid繧堤畑縺縺ヲ縲∝、夜Κ繧ュ繝シ縺ァ縺ゅkBook繝「繝繝ォ縺ョuser_id縺御サ」蜈・縺ァ縺阪∪縺吶

繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺ョ縺ゅk繝輔ぃ繧ッ繝医Μ繧定、謨ー菴懈

萓九∴縺ー縲√%縺ョ繧医≧縺ェ繝ェ繝ャ繝シ繧キ繝ァ繝ウ縺後≠縺」縺溷エ蜷

Uesr繝「繝繝ォ縺ォ蟇セ縺2縺、縺ョ繝「繝繝ォ縺後Μ繝ャ繝シ繧キ繝ァ繝ウ繧呈戟縺、蝣エ蜷

User繝「繝繝ォ縺ォ蟇セ縺励※縲√沓ook繝「繝繝ォ縲阪訓rofile繝「繝繝ォ縲阪′縺昴l縺槭l1蟇セ螟壹ョ繝ェ繝ャ繝シ繧キ繝ァ繝ウ迥カ諷九↓縺ェ縺」縺ヲ縺縺セ縺吶

User繝「繝繝ォ縺ョ逕滓舌↓蠢懊§縺ヲ縲∝、夜Κ繧ュ繝シ繧呈戟縺」縺ヲ縺繧毅ook繝「繝繝ォ縺ィProfile繝「繝繝ォ繧ゆス懊j縺溘>蝣エ蜷医ョ繧オ繝ウ繝励Ν繧ウ繝シ繝峨ッ縺薙■繧峨↓縺ェ繧翫∪縺吶Ias繝。繧ス繝繝峨r繝「繝繝ォ縺ョ謨ー縺縺大茜逕ィ縺吶k縺ィ縺縺莠九〒縺吶ュ縲

class UserSeeder extends Seeder
 {
     /**
      * Run the database seeds.
      *
      * @return void
      */
     public function run()
     {

     User::factory()
         ->count(50)
         ->has(
             Book::factory()
                 ->count(1)
                 ->state(function (array $attributes, User $user) {
                     return ['user_id' => $user->id];
                 })
         )->has(
             Profile::factory()
                 ->count(1)
                 ->state(function (array $attributes, User $user) {
                     return ['user_id' => $user->id];
                 })
         )
         ->create();
   }
 }

縺薙l縺ァ荳豌励↓50蜷阪ョUser縺ィ縺昴l縺ォ邏舌▼縺50蛟九ョBook縲50蛟九ョ繝励Ο繝輔ぅ繝シ繝ォ縺御ス懈舌&繧後∪縺励◆シ

繝繧ケ繝医こ繝シ繧ケ菴懈舌→菴オ縺帙※菴ソ縺医ー縲√ユ繧ケ繝医ョ繝シ繧ソ菴懈絶偵ユ繧ケ繝亥ョ溯。後→縺縺荳隕ァ縺ョ豬√l繧定ェ蜍募喧縺吶k縺薙→縺後〒縺阪∪縺吶ゆク隕ァ縺ョ豬√l繧定ェ蜍募喧縺励∝屓蟶ー繝繧ケ繝医↑縺ゥ隍謨ー蝗樒ケー繧願ソ斐☆繝繧ケ繝医こ繝シ繧ケ縺ァ蜉帙r逋コ謠ョ縺励∪縺吶

縺薙l縺ァ縲取焔髢薙□縺ェ縲√√上→諤昴▲縺ヲ繝繧ケ繝医r逵∫払縺吶k縺薙→縺ェ縺上∝刀雉ェ縺ョ蜷台ク翫↓蜉ェ繧√※縺縺阪∪縺励g縺縲

Laravel8縺ァ縺ョ繝輔ぃ繧ッ繝医Μ/繧キ繝シ繝縺ョ隱ャ譏弱ッ莉・荳翫↓縺ェ繧翫∪縺吶

繧ウ繝。繝ウ繝医r谿九☆