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

正文概述 云码哥   2024-07-10   300

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');
    }
}

 

 

 

 

本站大部分资源收集于网络以及网友投稿,本不保证资源的完整性以及安全性,请下载后自行测试。
本站资源仅供下载者学习技术,版权归资源原作者所有,请在下载后24小时之内自觉删除。
本站资源仅供下载者学习IT编程开发技术,请遵守国家法律法规,严禁用于非法用途。
若作商业用途,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
如您是版权方,本站源码有侵犯到您的权益,请邮件联系331752841@qq.com 删除,我们将及时处理!