You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel模型自关联查询异常:仅首条数据可获取同组数据

Laravel自关联返回空数组的问题排查与解决

问题原因

你定义的hasMany关联参数不正确。hasMany方法的第二个参数是关联模型的外键,第三个参数是当前模型的本地键。当前代码只传了第二个参数,Laravel会默认使用当前模型的id作为本地键进行关联匹配:

  • 当获取id=1的Book时,它会查找group_key = 1的记录(刚好数据库里都是group_key=1,所以返回3条)
  • 当获取id=2或3的Book时,它会查找group_key = 2或group_key=3的记录,数据库里没有这类数据,所以返回空数组

解决方法

修改自关联方法,明确指定本地键为group_key,让关联基于同组的group_key进行匹配:

public function allGroupItems()
{
    return $this->hasMany(self::class, 'group_key', 'group_key');
}

参数说明:

  • 第一个参数:关联的模型类self::class
  • 第二个参数:关联模型(Book)中用来匹配的外键字段group_key
  • 第三个参数:当前模型中用来匹配的本地键字段group_key

这样不管你获取哪一条Book记录,都会返回所有group_key与当前记录相同的条目。

内容的提问来源于stack exchange,提问作者autumnrustle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:44:54