前言
正在开发的系统中,需要将设备信息(EquipmentInfo)和设备所拥有的属性信息(EquipmentAttribute)返回,设备属性信息是通过 equipment_attribute 表中的 equ_id 字段关联的。因此,想用关联查询实现。
关联定义
class EquipmentInfo extends Model
{
// 定义一对多关联,一个设备拥有多个属性
public function equipmentAttribute()
{
return $this->hasMany('equipment_attribute', 'equ_id')->field('attribute_name, attribute_value');
}
}
在官方文档中,只说明了 V5.0.3+ 版本开始,可以使用 field() 方法支持为关联模型定义需要查询的字段,但是并没有说明在使用关联预加载的时候必须带上关联外键的主键,因此会报错:
![](https://img.haomeiwen.com/i5131627/c1c846308c4a3f5e.png)
所以必须加上关联模型的主键:
// 定义一对多关联
public function equipmentAttribute()
{
return $this->hasMany('equipment_attribute', 'equ_id')->field('attribute_name, attribute_value, equ_id');
}
成功返回数据:
![](https://img.haomeiwen.com/i5131627/cb84856599fb5be0.png)
当然,不要 field() 直接将关联的信息全部查询出来:
public function equipmentAttribute()
{
return $this->hasMany('equipment_attribute', 'equ_id');
}
这样就不会出这种问题啦。
网友评论