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');
}
我正在尝试在加载的 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');
}