PHP-web框架Laravel-Eloquent ORM(二)

2023-04-29 13:38:04 浏览数 (1)

三、模型关联

Laravel框架中的Eloquent ORM提供了方便的模型关联功能,用于定义不同表之间的关联关系。下面是几个常用的模型关联类型。

一对一关联

一对一关联表示一个模型与另一个模型有且只有一个对应关系。下面是一个示例:

代码语言:javascript复制
<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class User extends Model
{
    public function phone()
    {
        return $this->hasOne(Phone::class);
    }
}

class Phone extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

上述代码中,定义了一个User模型和一个Phone模型,通过在User模型中定义phone方法和在Phone模型中定义user方法,实现了这两个模型之间的一对一关联关系。其中,hasOne方法表示一个User模型拥有一个Phone模型,belongsTo方法表示一个Phone模型属于一个User模型。

一对多关联

一对多关联表示一个模型拥有多个相关模型。下面是一个示例:

代码语言:javascript复制
<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}

class Comment extends Model
{
    public function post()
    {
        return $this->belongsTo(Post::class);
    }
}

上述代码中,定义了一个Post模型和一个Comment模型,通过在Post模型中定义comments方法和在Comment模型中定义post方法,实现了这两个模型之间的一对多关联关系。其中,hasMany方法表示一个Post模型拥有多个Comment模型,belongsTo方法表示一个Comment模型属于一个Post模型。

多对多关联

多对多关联表示两个模型之间存在多对多的关联关系。下面是一个示例:

代码语言:javascript复制
<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
}

class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class);
    }
}

上述代码中,定义了一个User模型和一个Role模型,通过在User模型中定义roles方法和在Role模型中定义users方法,实现了这两个模型之间的多对多关联关系。其中,belongsToMany方法表示一个User模型拥有多个Role模型,同时一个Role模型也属于多个User模型。

php

0 人点赞