
这里描述两种稍微复杂一点的关联关系的实现和查询,一种是模型A同时和模型B和C关联;两一种是模型A和模型B关联,模型B和模型C关联。
第一种关联,可以再模型A中建立两个关联函数,表示关联:
public function items(){return $this->hasMany('BannerItem','banner_id','id');}
public function items1(){return $this->hasMany(‘BannerItem’,‘banner_id’,‘id’);}//items 和items1表示两个关联关系。
这种关联关系的查询:
$banner = BannerModel::with(['items','itemss1'])->find($id);//查询时with方法接收一个数组,数组的元素是定义关联关系函数的函数名。
第二种关联,可以再模型A中定义和B的关联,在模型B中定义和C的关联,定义的方法和普通定义相同。
这种关联关系的查询:
$banner = BannerModel::with(['items','items.img'])->find($id);//注意数组的第二个元素,用'.'连接两个关联函数的函数名。
另外:
表示一对多的对应关系的函数为:hasMany(‘关联模型名’,‘外键名’,'本模型主键名'),
表示一对一关系的函数为:belongsTo(‘关联模型名’,‘外键名’,'本模型主键名')。
网友评论