Laravel - 如何在 hasmany 关系上加载 hasone 关系

Laravel - How to load a hasone relation on a hasmany relation

我正在尝试在加载的 hasmany 关系上加载 hasone 关系。

基本上,我已经加载了我的完成日志,但还想为每个加载的完成日志记录加载 pool_section 模型关系。

$appointments = Appointment::primaryAppointments()->ofReportingPeriod($reportingPeriod->id)->take(5)->get();

$appointments = $appointments->load('profile', 'department')->load(['completion_logs' => function ($query) use ($reportingPeriod) {
    $query->where('reporting_period_id', $reportingPeriod->id)->whereNotNull('pool_section_id')->orderBy('pool_section_id');
}]);

正在尝试将 pool_section 关系加载到上面加载的完成日志中:

class PoolSectionCompletion extends Model

public function pool_section()
{
     return $this->belongsTo('App\Models\PoolSection', 'pool_section_id', 'id');
}

class Appointment extends Model

public function completion_logs()
{
     return $this->hasManyThrough('App\Models\PoolSectionCompletion', 'App\Models\Profile', 'id', 'profile_id', 'profile_id', 'id');
}

我正在尝试加载 select 完成日志,然后根据 id 加载 pool_section 关系,以便为每个加载的完成获取 pool_section 数据日志。感谢任何帮助。

似乎如果我添加如下关系——它映射正确,但会引入每个报告周期的所有完成日志,而不仅仅是每个路由定义的日志。我需要定义报告期间的完成日志,但映射的 hasone 关系与 pool_section.

$appointments = $appointments->load('profile', 'department')->load(['completion_logs' => function ($query) use ($reportingPeriod) {
    $query->where('reporting_period_id', $reportingPeriod->id)->whereNotNull('pool_section_id')->orderBy('pool_section_id');
}])->load('completion_logs.pool_section');

它永远不会失败...花费 days/hours 尝试解决问题,然后最终 post 经过一些额外的努力才能够在几个小时后解决问题。

我能够通过简单地将关系加载到 hasmany 关系上来实现我所需要的。

class Appointment extends Model

public function completion_logs()
{
     return $this->hasManyThrough('App\Models\PoolSectionCompletion', 'App\Models\Profile', 'id', 'profile_id', 'profile_id', 'id')->with('pool_section');
}