Laravel 8 如何通过ID关联两张表获取数据并在视图中展示
你的查询条件传参错误:where('asset_id',$asset)这里你传入的是完整的Asset模型对象,数据库匹配的asset_id是数字字段,匹配不到对应数据。
直接修复代码
修改控制器中的查询语句即可:
public function edit(Asset $asset) { // 改为取$asset的id属性作为匹配值 $phistories = DB::table('phistories')->where('asset_id', $asset->id)->get(); return view('assets.editAsset',[ 'asset' => $asset, 'phistories' => $phistories ]); }
推荐优化方案(用Laravel模型关联更规范)
- 先在
Asset模型中定义一对多关联:
// app/Models/Asset.php public function phistories() { return $this->hasMany(Phistory::class); }
- 控制器代码简化为:
public function edit(Asset $asset) { // 预加载关联数据,避免N+1查询问题 $asset->load('phistories'); return view('assets.editAsset', [ 'asset' => $asset, 'phistories' => $asset->phistories ]); }
排查验证
如果修改后仍无数据,可以在控制器中加dd($phistories)打印查询结果,确认数据库中对应asset_id是否存在phistories记录即可。
内容的提问来源于stack exchange,提问作者Sue A.
相关产品推荐
相关产品推荐

