最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 在 Laravel 中为爱尔兰县播种数据库

    在 laravel 中为爱尔兰县播种数据库

    最初发表在我的博客,briandouglas.ie

    这是有关如何在数据库中添加按省份分组的爱尔兰县的分步指南。

    第 1 步 – 省份迁移

    php artisan make:迁移create_provinces_table

    我们只需要一个省份的名称。

    schema::create('provinces', function (blueprint $table) {
        $table->id();
        $table->string('name');
        $table->timestamps();
    });
    

    第 2 步 – 县迁移

    php artisan make:migration create_counties_table

    除了名称之外,县还将包含对其所属省份的引用。

    schema::create('counties', function (blueprint $table) {
        $table->id();
        $table->string('name');
        $table->foreignidfor(province::class);
        $table->timestamps();
    });
    

    第 3 步 – 省份模型

    php artisan make:模型省

    这里我们添加 name 作为可填写的属性,并与 county 建立 hasmany 关系。

    <?php namespace appmodels;
    
    use illuminatedatabaseeloquentfactorieshasfactory;
    use illuminatedatabaseeloquentmodel;
    use illuminatedatabaseeloquentrelationshasmany;
    
    class province extends model
    {
        use hasfactory;
    
        protected $fillable = ['name'];
    
        public function counties(): hasmany
        {
            return $this->hasmany(county::class);
        }
    }
    

    第 4 步 – 县模型

    php artisan make:模型县

    这里我们添加name和province_id作为可填写属性,并与province建立belongsto关系。

    <?php namespace appmodels;
    
    use illuminatedatabaseeloquentfactorieshasfactory;
    use illuminatedatabaseeloquentmodel;
    use illuminatedatabaseeloquentrelationsbelongsto;
    
    class county extends model
    {
        use hasfactory;
    
        protected $fillable = ['name', 'province_id'];
    
        public function province(): belongsto
        {
            return $this->belongsto(province::class);
        }
    }
    

    第 5 步 – 省份播种者

    php artisan make:seeder provinceseeder

    provinceseeder 将为爱尔兰每个省创建记录,并附上相关县。

    <?php namespace DatabaseSeeders;
    
    use AppModelsProvince;
    use IlluminateDatabaseConsoleSeedsWithoutModelEvents;
    use IlluminateDatabaseSeeder;
    
    class ProvinceSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         */
        public function run(): void
        {
            $irishCounties = [
                'Leinster' => [
                    'Carlow',
                    'Cavan',
                    'Dublin',
                    'Kildare',
                    'Kilkenny',
                    'Laois',
                    'Longford',
                    'Louth',
                    'Meath',
                    'Offaly',
                    'Westmeath',
                    'Wexford',
                    'Wicklow'
                ],
                'Munster' => [
                    'Clare',
                    'Cork',
                    'Kerry',
                    'Limerick',
                    'Tippperary',
                    'Waterford'
                ],
                'Connacht' => [
                    'Galway',
                    'Leitrim',
                    'Mayo',
                    'Roscommon',
                    'Sligo'
                ],
                'Ulster' => [
                    'Antrim',
                    'Armagh',
                    'Cavan',
                    'Derry',
                    'Donegal',
                    'Down',
                    'Fermanagh',
                    'Monaghan',
                    'Tyrone'
                ]
            ];
    
            foreach ($irishCounties as $provinceName => $countyNames) {
                $province = Province::firstOrCreate(['name' => $provinceName]);
                foreach ($countyNames as $countyName) {
                    $province->counties()->firstOrCreate(['name' => $countyName]);
                }
            }
        }
    }
    

    第 6 步 – 运行播种机

    php artisan db:seed –class=provinceseeder

    由于省份和县不会改变,所以播种器只需要运行一次。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 在 Laravel 中为爱尔兰县播种数据库
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情