美文网首页
ThinkPHP 5.0 关联查询踩到的坑

ThinkPHP 5.0 关联查询踩到的坑

作者: Edwinpanzzz | 来源:发表于2019-04-19 15:50 被阅读0次

前言

正在开发的系统中,需要将设备信息(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() 方法支持为关联模型定义需要查询的字段,但是并没有说明在使用关联预加载的时候必须带上关联外键的主键,因此会报错:


image.png

所以必须加上关联模型的主键:

// 定义一对多关联
public function equipmentAttribute()
{
    return $this->hasMany('equipment_attribute', 'equ_id')->field('attribute_name, attribute_value, equ_id');
}

成功返回数据:


image.png

当然,不要 field() 直接将关联的信息全部查询出来:

public function equipmentAttribute()
{
    return $this->hasMany('equipment_attribute', 'equ_id');
}

这样就不会出这种问题啦。

相关文章

网友评论

      本文标题:ThinkPHP 5.0 关联查询踩到的坑

      本文链接:https://www.haomeiwen.com/subject/titcgqtx.html