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

Laravel Eloquent关联两张表后未显示关联表数据求助

解决Eloquent关联未加载Table2数据的问题

嘿,我一眼就看出问题出在哪了——你搞反了关联方向,还写错了外键参数,咱们一步步来修正:

问题根源

先理清楚你的表关系:

  • Table2里的Id_table1字段是用来关联Table1的Id的,这说明Table1是主表,Table2是依赖它的从表。
  • 你在Table1模型里用了belongsTo,这完全搞反了关系!belongsTo是从表(比如Table2)用来关联主表(Table1)的方法,主表关联从表应该用hasOne或者hasMany。
  • 另外,就算你硬要用belongsTo(虽然方向错了),第二个参数写id也不对,那不是对应的外键字段。

正确的关联设置

修正Table1模型

从你的示例数据来看,每个Table1对应一条Table2数据,所以用hasOne:

class Table1 extends Model{
    public function yoman() {
        // 语法:hasOne(关联模型, 从表的外键字段, 主表的主键字段)
        return $this->hasOne(Table2::class, 'Id_table1', 'Id');
    }
}

如果一个Table1对应多条Table2数据,把hasOne换成hasMany就行,参数保持不变。

(可选)Table2模型的反向关联

要是之后你需要从Table2查询对应的Table1数据,Table2模型可以这么写:

class Table2 extends Model{
    public function table1() {
        // 语法:belongsTo(关联模型, 当前表的外键字段, 关联表的主键字段)
        return $this->belongsTo(Table1::class, 'Id_table1', 'Id');
    }
}

验证效果

现在运行你的控制器代码:

public function gets(){
    $data = Table1::with('yoman')->get();
    // 可以用dd($data)查看结果,每个Table1实例里都会带上对应的Table2数据
}

就能正常看到关联的Table2数据啦!

内容的提问来源于stack exchange,提问作者Adriyana Putra Pratama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:02:55