首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PHP-web框架Laravel-数据库(三)

PHP-web框架Laravel-数据库(三)

原创
作者头像
堕落飞鸟
发布于 2023-04-29 13:34:29
发布于 2023-04-29 13:34:29
1.4K0
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

三、模型关联

Laravel框架中的模型关联功能可以方便地实现数据库表之间的关联。在Laravel框架中,可以通过hasOne、hasMany、belongsTo、belongsToMany等方法来实现不同类型的关联。下面是一个hasMany关联的示例:

创建迁移文件

执行以下命令来创建articles和comments表:

代码语言:javascript
复制
php artisan make:migration create_articles_table --create=articles
php artisan make:migration create_comments_table --create=comments

编写迁移代码

打开articles迁移文件,编写创建articles表的代码,如下所示:

代码语言:javascript
复制
public function up()
{
    Schema::create('articles', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

打开comments迁移文件,编写创建comments表的代码,如下所示:

代码语言:javascript
复制
public function up()
{
    Schema::create('comments', function (Blueprint $table) {
        $table->id();
        $table->unsignedBigInteger('article_id');
        $table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');
        $table->text('content');
        $table->timestamps();
    });
}

上述代码创建了两个表,一个是articles表,一个是comments表。comments表中有一个article_id字段,该字段是外键,指向articles表中的id字段。

定义模型关联

在Laravel框架中,可以通过在模型中定义关联来实现不同表之间的关联。打开Article模型,定义hasMany关联,如下所示:

代码语言:javascript
复制
class Article extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}

在Comment模型中,定义belongsTo关联,如下所示:

代码语言:javascript
复制
class Comment extends Model
{
    public function article()
    {
        return $this->belongsTo(Article::class);
    }
}

上述代码中,Article模型中的comments方法定义了hasMany关联,表示一个文章可以有多条评论;Comment模型中的article方法定义了belongsTo关联,表示一条评论属于一个文章。

使用模型关联

使用模型关联可以方便地获取关联的数据。下面是一个获取某篇文章的评论列表的示例:

代码语言:javascript
复制
$article = Article::find(1);
$comments = $article->comments;

上述代码中,首先获取id为1的文章,然后通过$article->comments获取该文章的评论列表。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 三、模型关联
    • 创建迁移文件
    • 编写迁移代码
    • 定义模型关联
    • 使用模型关联
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档