Laravel常用Eloquent模型关联hasOne,hasMany,belongsTo,belongsToMany区别用法

1. hasOne()

当前city表为主表,需要向下找关联表的字段用hasOne (主表A有一个B)

/**
 * 城市表模型
 *
 * @author 云创源码
 * @Datetime 2020-8-14
 * @package App\Models\Account
 */
class City extends Model
{
    protected $table = 'city';

    /**
     * 获取省份详细信息
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function province() {
        return $this->hasOne(Province::class,'city_id','id');
    }
}

2. hasMany()

一对多关系hasMany(主表A有很多B)

/**
 * 省份表模型
 *
 * @author 云创源码
 * @Datetime 2020-8-14
 * @package App\Models\Account
 */
class Province extends Model
{
    protected $table = 'province';

    /**
     * 获取省份详细信息
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function city() {
        return $this->hasMany(City::class,'province_id','id');
    }
}

3. belongsTo()

当前表为关联表,需要向上找关联表的字段用belongsTO(主表A属于B)

 /**
 * 管理员表模型
 *
 * @author 云创源码 * @Datetime 2020-8-14 * @package App\Models\Account */ class AdminUser extends Model { protected $table = 'admin_users'; /** * 关联账户表 * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function account() { return $this->belongsTo(AccountUser::class,'uid','id'); } } 

4. belongsToMany()

belongsToMany多对多关系,多对多关系需要第三个数据库表,称为数据透视表

(privilege权限表,role角色表,role_privilege 角色权限表,一个角色拥有多个权限,一个权限可以被多个角色拥有)

/**
 * 角色表模型
 *
 * @author 云创源码
 * @Datetime 2020-8-14
 * @package App\Models\Account
 */
class Role extends Model
{
    protected $table = 'role';
    
    /**
     * 关联权限
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function privilege() {
        return $this->belongsToMany(Privilege::class,'role_privilege','role_id','privilege_id');
    }
}

 

 

 

 

原文链接:https://vuesite.cn/42855.html,转载请注明出处。
0
显示验证码
没有账号?注册  忘记密码?