- 一對多
定義:
class Banner extends Model
{
public function items(){
//一個banner對應多個banneritem
//第一個參數:被關聯的模型.
//第二個參數:(2個模型關聯的字段)被關聯模型的外鍵.
//第三個參數:當前模型的主鍵
//**記得return, 記得記得.**
return $this->hasMany('BannerItem','banner_id','id');
}
}
調用:
$banner = BannerModel::with('items')->find($id);
2.一對一
class BannerItem extends Model
{
public function img(){
//第一個參數:被關聯的模型.
//第二個參數:(2個模型關聯的字段)當前模型用來關聯的外鍵.
//第三個參數:當前模型的主鍵
//當前模型所對應的表含有外鍵字段就用belongsTo, 如果沒有就用hasOne()
return $this->belongsTo('Image','img_id','id');
}
}
3.多對多
class Theme extends BaseModel
{
protected $hidden = ['topic_img_id','head_img_id','update_time','delete_time'];
public function products(){
//多對多
//第一個參數是關聯的模型,第二個參數是中間表(第三個表)的表名
//第三個參數是關聯模型的關聯id,第4個參數當前模型的關聯id
return $this->belongsToMany('Product','theme_product','product_id','theme_id');
}
}
3.嵌套調用
$banner = BannerModel::with(['items','items.img'])->find($id);