public function up()

in database/migrations/2019_02_09_200203_add_gender_type.php [16:52]


    public function up()
    {
        Schema::table('genders', function (Blueprint $table) {
            $table->char('type', 1)->after('name')->nullable();
        });

        $appLocale = config('app.locale');
        $womanEn = trans('app.gender_female', [], $appLocale);
        $manEn = trans('app.gender_male', [], $appLocale);
        $otherEn = trans('app.gender_none', [], $appLocale);

        Account::with(['users', 'genders'])->chunk(200, function ($accounts) use ($appLocale, $womanEn, $manEn, $otherEn) {
            foreach ($accounts as $account) {
                $locale = $account->getFirstLocale() ?: $appLocale;

                $woman = trans('app.gender_female', [], $locale);
                $man = trans('app.gender_male', [], $locale);
                $other = trans('app.gender_none', [], $locale);

                foreach ($account->genders->all() as $gender) {
                    if ($gender->name == $woman || $gender->name == $womanEn) {
                        $gender->type = Gender::FEMALE;
                    } elseif ($gender->name == $man || $gender->name == $manEn) {
                        $gender->type = Gender::MALE;
                    } elseif ($gender->name == $other || $gender->name == $otherEn) {
                        $gender->type = Gender::OTHER;
                    } else {
                        $gender->type = Gender::UNKNOWN;
                    }

                    // prevent timestamp update
                    $gender->timestamps = false;
                    $gender->save();
                }
            }
        });
    }