thinkphp5 模型關聯(一對一, 一對多, 多對多...)

  1. 一對多
    定義:
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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章