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

Laravel通过中间表关联查询:Site模型关联News表的正确配置

解决Site模型关联News的hasManyThrough配置问题

你当前的hasManyThrough参数配置完全错误,这就是返回计数为0的原因。

根据你的表结构:

  • sites(主表)和listings的关联:listings表用sites_id关联sites的主键
  • listings和news的关联:news表用listing_id关联listings的主键

正确的Site模型关联方法应该这么写:

public function news()
{
    return $this->hasManyThrough(
        News::class,
        Listing::class,
        'sites_id',   // listings表中关联sites的外键
        'listing_id', // news表中关联listings的外键
        'id',         // sites表的主键
        'id'          // listings表的主键
    );
}

参数对应逻辑:

  • 前两个参数依次是最终要关联的模型和中间过渡的模型
  • 第三个参数是中间表(listings)指向主表(sites)的外键
  • 第四个参数是目标表(news)指向中间表(listings)的外键
  • 最后两个参数分别是主表和中间表的主键(如果是默认的id可以省略,但显式写出更清晰)

改完之后,再执行$news = $site->news()->count();就能正确获取该站点关联的所有新闻数量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:23:10