区分父表与子表
1.”一”的是父表
2.”多”的一方是子表
如何处理一对多关系
在子表中建一个字段(外键)指向父表
如何处理多对多关系
建立一张中间表,将”多对多”关系转化为”一对多”
一对一hasOne
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
public function Userinfo()
{
/*
* @param [string] [name] [需要关联的模型类名]
* @param [string] [foreign] [参数一指定数据表中的字段]
* */
return $this->hasOne(UserInfo::class,'user_id');
}
}
一对多hasMany
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
public function article()
{
return $this->hasOne(Article::class,'user_id');
}
}
多对一 belongTo
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
public function city()
{
return $this->belongTo(City::class,'city_id');
}
}
多对多 belongToMany
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
public function Role(){
/*
* 第一个参数:要关联的表对应的类
* 第二个参数:中间表的表名
* 第三个参数:当前表跟中间表对应的外键
* 第四个参数:要关联的表跟中间表对应的外键
* */
return $this->belongsToMany('App\Role','user_role','user_id','role_id');
}
}