首页 > 解决方案 > Laravel orm with() 不起作用

问题描述

JoinSkipReason 没有id,但是JoinReview 的主键是JoinSkipReason 的外键。

查询生成器运行良好...

我想使用 with() 将 JoinSkipReason 加入到 JoinReview 表中。

谢谢你。

JoinReview::with(
    'join_skip_reason'
);
class JoinReview extends Model
{
    public function joinSkipReason()
    {
        return $this->hasOne('App\Models\Service\JoinSkipReason');
    }
}
class JoinSkipReason extends Model
{
    protected $fillable = ['join_review_id', 'reason'];

    public function joinReview()
    {
        return $this->belongsTo('App\Models\Service\JoinReview', 'id');
    }
}

标签: laraveljoineloquentorm

解决方案


我自己也遇到过这个问题,问题是为了急切加载多词关系,你应该使用 camelCase。

在您的代码中:

JoinReview::with(
  'joinSkipReason'
);

我还发现了一个(有点旧的)问题,说您还应该以 camelCase 的形式访问预先加载的关系,否则它将忽略缓存的结果并再次查询数据库。


推荐阅读