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

WBOY
发布: 2024-07-31 09:52:02
转载
584人浏览过

在 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 关系。

播记
播记

播客shownotes生成器 | 为播客创作者而生

播记 43
查看详情 播记
<?php

namespace app\models;

use illuminate\database\eloquent\factories\hasfactory;
use illuminate\database\eloquent\model;
use illuminate\database\eloquent\relations\hasmany;

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 app\models;

use illuminate\database\eloquent\factories\hasfactory;
use illuminate\database\eloquent\model;
use illuminate\database\eloquent\relations\belongsto;

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 Database\Seeders;

use App\Models\Province;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

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

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

以上就是在 Laravel 中为爱尔兰县播种数据库的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:dev.to网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号